hive整合spark和mysql
一、Hive安裝
1.Hive簡介
Hive是Facebook開發的構建於Hadoop叢集之上的資料倉庫應用,可以將結構化的資料檔案對映為一張資料庫表,並提供完整的SQL查詢功能,可以將SQL語句轉換為MapReduce任務進行執行。
Hive是一個可以提供有效的、合理的且直觀的組織和使用資料的模型,即使對於經驗豐富的Java開發工程師來說,將這些常見的資料運算對應到底層的MapReduce Java API也是令人敬畏的。Hive可以幫使用者做這些工作,使用者就可以集中精力關注查詢本身了。Hive可以將大多數的查詢轉換為MapReduce任務。Hive最適合於資料倉庫應用程式,使用該應用程式進行相關的靜態資料分析,不需要快速響應給出結果,而且資料本身也不會頻繁變化。
Hive不是一個完整的資料庫。Hadoop以及HDFS的設計本身約束和侷限性限制了Hive所能勝任的工作。最大的限制就是Hive不支援記錄級別的更新、插入或者刪除。使用者可以通過查詢生成新表或將查詢結果匯入到檔案中去。因為,Hadoop是一個面向批處理的系統,而MapReduce啟動任務啟動過程需要消耗很長時間,所以Hive延時也比較長。Hive還不支援事務。因此,Hive不支援聯機事務處理(OLTP),更接近於一個聯機分析技術(OLAP)工具,但是,目前還沒有滿足“聯機”部分。
Hive提供了一系列的工具,可以用來進行資料提取轉化載入(ETL),其中,ETL是一種可以儲存、查詢和分析儲存在Hadoop中的大規模資料的機制。因此,Hive是最適合資料倉庫應用程式的,它可以維護海量資料,而且可以對資料進行挖掘,然後形成意見和報告等。
因為大多數的資料倉庫應用程式是基於SQL的關係資料庫現實的,所以,Hive降低了將這些應用程式移植到Hadoop上的障礙。如果使用者懂得SQL,那麼學習使用Hive會很容易。因為Hive定義了簡單的類SQL 查詢語言——HiveQL,這裡值得一提的是,與SQLServer、Oracle相比,HiveQL和MySQL提供的SQL語言更接近。同樣的,相對於其他的Hadoop語言和工具來說,Hive也使得開發者將基於SQL的應用程式移植到Hadoop變得更加容易。
2.Hive安裝
接下來,開始Hive的安裝,安裝Hive之前,首先需要裝好Hadoop和Spark。在可下載最新版本Hive,並且能夠查閱版本改動說明,本次課程採用1.2.2版本進行安裝。可以採用WinSCP傳輸apache-hive-1.2.2-bin.tar至虛擬機器“下載”資料夾中,再進行後續安裝。
cd ~/下載 # 進入下載資料夾
sudo tar -zxf apache-hive-1.2.2-bin.tar.gz -C /usr/local # 安裝至/usr/local資料夾內
cd /usr/local # 進入/usr/local資料夾
sudo mv ./apache-hive-1.2.2-bin/ ./hive # 更名為hive
sudo chown -R hadoop ./hive # 修改hive許可權
mkdir -p /usr/local/hive/warehouse # 建立元資料儲存資料夾
sudo chmod a+rwx /usr/local/hive/warehouse # 修改檔案許可權
然後新增Hive安裝路徑至系統環境變數
vim ~/.profile
新增下述路徑
#Hive
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
並使之生效
source ~/.profile
修改hive讀取spark的jar包地址
cd /usr/local/hive/bin
vim hive
修改為
# add Spark assembly jar to the classpath
if [[ -n "$SPARK_HOME" ]]
then
sparkAssemblyPath=`ls ${SPARK_HOME}/jars/*.jar`
CLASSPATH="${CLASSPATH}:${sparkAssemblyPath}"
fi
然後採用hive預設配置
cd /usr/local/hive/conf
cp hive-default.xml.template hive-default.xml
嘗試啟動Hive,此時啟動是以本地模式進行啟動,能正常啟動則說明安裝成功。
start-all.sh
hive
若出現jline等jar包錯誤,則需要進入到hadoop安裝目錄下的share/hadoop/yarn/lib下刪除jline-0.9.94.jar檔案,再啟動hive即可(因為高版本的Hadoop對Hive有捆綁)。
cd /usr/local/hadoop/share/hadoop/yarn/lib
rm -rf jline-0.9.94.jar
3. Hive的基本配置
在安裝Hive時,預設情況下,元資料儲存在Derby資料庫中。Derby是一個完全用Java編寫的資料庫,所以可以跨平臺,但需要在JVM中執行 。因為多使用者和系統可能需要併發訪問元資料儲存,所以預設的內建資料庫並不適用於生產環境。任何一個適用於JDBC進行連線的資料庫都可用作元資料庫儲存,這裡我們把MySQL作為儲存元資料的資料庫。接下來,我們分別對這兩種方式進行介紹,即使用Derby資料庫的方式和使用MySQL資料庫的方式。
3.1 使用Derby作為元資料庫
本地模式中,使用者的“表”等元資料資訊,都預設儲存在file://user/hive/warehouse,對於其他模式預設儲存路徑是hdfs://namenode_server/user/hive/warehouse。使用如下命令編輯hive-site.xml檔案:
vim /usr/local/hive/conf/hive-site.xml
在hive-site.xml檔案新增以下內容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/usr/local/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=/usr/local/hive/metastore_db;create=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
</configuration>
若要以偽分散式模式和分散式模式配置Hive,只需根據Hadoop配置檔案core-site.xml中fs.defaultFS的值對hive.metastore.warehouse.dir 進行相應修改即可。配置完成之後即可啟動Hive,然後嘗試使用HiveQL命令建立表。
hive
show databases;
create database if not exists derby;
use derby;
create table x(a int);
select * from x;
drop table x;
exit;
3.2 使用MySQL作為元資料庫
3.2.1 安裝MySQL
首先,檢視並解除安裝系統自帶的MySQL相關安裝包(或之前安裝過MySQL),命令如下:
sudo apt install rpm
rpm -qa | grep mysql
若沒有安裝rpm工具,系統會有提示,按照提示安裝即可。接下來檢視是否有系統自帶的MySQL相關安裝包,若有,按下面命令刪除:
sudo rpm -e --nodeps mysql-libs-xxxxxx
注:xxxxx是已經安裝的mysql的版本號,然後進行MySQL的安裝
sudo apt-get install mysql-server
安裝完成後,啟動設定MySQL服務
sudo service mysql start
mysql -u root -p
當然,還可使用下列命令進行額外設定
sudo chkconfig mysql on # 設定開機自動啟動
sudo /usr/bin/mysqladmin -u root password '123' # 設定root使用者密碼
接下來,建立hive使用者及其資料庫等,用於存放Hive的元資料
sudo vi /etc/mysql/my.cnf
註釋掉:bind-address = 127.0.0.1
create database hive;
grant all on *.* to hive[email protected] identified by 'hive';
flush privileges;
exit;
切換hive使用者登陸
mysql -u hive -p hive
show databases;
若能看到hive資料庫存在,則說明建立成功。
3.2.2 修改Hive配置
接下來,修改hive-site.xml檔案
vim /usr/local/hive/conf/hive-site.xml
輸入下列資訊
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
<description>password to use against metastore database</description>
</property>
</configuration>
或者指定元資料資料夾
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/usr/local/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive;createDatebaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword </name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>Username to use against metastore database</description>
</property>
</configuration>
然後將JDBC檔案放到hive的lib資料夾內,JDBC包的下載參考前述部分
cd ~/下載
cp mysql-connector-java-5.1.26-bin.jar /usr/local/hive/lib
mkdir -p /usr/local/hive/tmp
sudo chmod a+rwx /usr/local/hive/tmp
也可從官網直接下載最新版jdbc
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.45.tar.gz
然後進行解壓安裝。當然,如果之前刪除了jline-0.9.94.jar,此時需要把hive對應的jar包放進去
cp /usr/local/hive/lib/jline-2.12.jar /usr/local/hadoop/share/hadoop/yarn/lib
然後嘗試啟動hive
schematool -dbType mysql -initSchema
start-all.sh
hive
成啟動後,即可輸入hive –help檢視hive常用命令。
二、Hive使用
1.Hive基本資料型別
首先,我們簡單敘述一下HiveQL的基本資料型別。
Hive支援基本資料型別和複雜型別, 基本資料型別主要有數值型別(INT、FLOAT、DOUBLE ) 、布林型和字串, 複雜型別有三種:ARRAY、MAP 和 STRUCT。
1.1 基本資料型別
- TINYINT: 1個位元組
- SMALLINT: 2個位元組
- INT: 4個位元組
- BIGINT: 8個位元組
- BOOLEAN: TRUE/FALSE
- FLOAT: 4個位元組,單精度浮點型
- DOUBLE: 8個位元組,雙精度浮點型STRING 字串
1. 2 複雜資料型別
- ARRAY: 有序欄位
- MAP: 無序欄位
- STRUCT: 一組命名的欄位
2.常用的HiveQL操作命令
Hive常用的HiveQL操作命令主要包括:資料定義、資料操作。接下來詳細介紹一下這些命令即用法(想要了解更多請參照《Hive程式設計指南》一書)。
2.1 資料定義
主要用於建立修改和刪除資料庫、表、檢視、函式和索引。
建立、修改和刪除資料庫
create database if not exists hive; #建立資料庫 show databases; #檢視Hive中包含資料庫 show databases like 'h.*'; #檢視Hive中以h開頭資料庫 describe databases; #檢視hive資料庫位置等資訊 alter database hive set dbproperties; #為hive設定鍵值對屬性 use hive; #切換到hive資料庫下 drop database if exists hive; #刪除不含表的資料庫 drop database if exists hive cascade; #刪除資料庫和它中的表
注意,除 dbproperties屬性外,資料庫的元資料資訊都是不可更改的,包括資料庫名和資料庫所在的目錄位置,沒有辦法刪除或重置資料庫屬性。
建立、修改和刪除表
#建立內部表(管理表) create table if not exists hive.usr( name string comment 'username', pwd string comment 'password', address struct<street:string,city:string,state:string,zip:int>, comment 'home address', identify map<int,tinyint> comment 'number,sex') comment 'description of the table' tblproperties('creator'='me','time'='2016.1.1'); #建立外部表 create external table if not exists usr2( name string, pwd string, address struct<street:string,city:string,state:string,zip:int>, identify map<int,tinyint>) row format delimited fields terminated by ',' location '/usr/local/hive/warehouse/hive.db/usr'; #建立分割槽表 create table if not exists usr3( name string, pwd string, address struct<street:string,city:string,state:string,zip:int>, identify map<int,tinyint>) partitioned by(city string,state string); #複製usr表的表模式 create table if not exists hive.usr1 like hive.usr; show tables in hive; show tables 'u.*'; #檢視hive中以u開頭的表 describe hive.usr; #檢視usr表相關資訊 alter table usr rename to custom; #重命名錶 #為表增加一個分割槽 alter table usr2 add if not exists partition(city=”beijing”,state=”China”) location '/usr/local/hive/warehouse/usr2/China/beijing'; #修改分割槽路徑 alter table usr2 partition(city=”beijing”,state=”China”) set location '/usr/local/hive/warehouse/usr2/CH/beijing'; #刪除分割槽 alter table usr2 drop if exists partition(city=”beijing”,state=”China”) #修改列資訊 alter table usr change column pwd password string after address; alter table usr add columns(hobby string); #增加列 alter table usr replace columns(uname string); #刪除替換列 alter table usr set tblproperties('creator'='liming'); #修改表屬性 alter table usr2 partition(city=”beijing”,state=”China”) #修改儲存屬性 set fileformat sequencefile; use hive; #切換到hive資料庫下 drop table if exists usr1; #刪除表 drop database if exists hive cascade; #刪除資料庫和它中的表
檢視和索引的建立、修改和刪除
基本語法格式
create view view_name as....; #建立檢視 alter view view_name set tblproperties(…); #修改檢視
因為檢視是隻讀的,所以 對於檢視只允許改變元資料中的 tblproperties屬性。
#刪除檢視 drop view if exists view_name; #建立索引 create index index_name on table table_name(partition_name/column_name) as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' with deferred rebuild....;
這裡’org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler’是一個索引處理器,即一個實現了索引介面的Java類,另外Hive還有其他的索引實現。
alter index index_name on table table_name partition(...) rebulid; #重建索引
如果使用 deferred rebuild,那麼新索引成空白狀態,任何時候可以進行第一次索引建立或重建。
show formatted index on table_name; #顯示索引 drop index if exists index_name on table table_name; #刪除索引
2.2 資料操作
主要實現的是將資料裝載到表中(或是從表中匯出),並進行相應查詢操作
向表中裝載資料
create table if not exists hive.stu(id int,name string) row format delimited fields terminated by '\t'; create table if not exists hive.course(cid int,sid int) row format delimited fields terminated by '\t';
向表中裝載資料有兩種方法:從檔案中匯入和通過查詢語句插入。
- 從檔案中匯入
假如這個表中的記錄儲存於檔案stu.txt中,該檔案的儲存路徑為usr/local/hadoop/examples/stu.txt,內容如下。
1 Hello 2 World 3 CDA
load data local inpath '/usr/local/hadoop/examples/stu.txt' overwrite into table stu;
- 通過查詢語句插入
使用如下命令,建立stu1表,它和stu表屬性相同,我們要把從stu表中查詢得到的資料插入到stu1中:
create table stu1 as select id,name from stu;
上面是建立表,並直接向新表插入資料;若表已經存在,向表中插入資料需執行以下命令:
insert overwrite table stu1 select id,name from stu where(條件);
這裡關鍵字overwrite的作用是替換掉表(或分割槽)中原有資料,換成into關鍵字,直接追加到原有內容後。
寫入臨時檔案
insert overwrite local directory '/usr/local/hadoop/tmp/stu' select id,name from stu;
查詢操作
select id,name, case when id=1 then 'first' when id=2 then 'second' else 'third'
2.3 連線
連線(join)是將兩個表中在共同資料項上相互匹配的那些行合併起來, HiveQL 的連線分為內連線、左向外連線、右向外連線、全外連線和半連線 5 種。
內連線(等值連線)
內連線使用比較運算子根據每個表共有的列的值匹配兩個表中的行。
首先,我們先把以下內容插入到course表中(自行完成)。
1 3
2 1
3 1
下面, 查詢stu和course表中學號相同的所有行,命令如下:
select stu.*, course.* from stu join course on(stu .id=course .sid);
左連線
左連線的結果集包括“LEFT OUTER”子句中指定的左表的所有行, 而不僅僅是連線列所匹配的行。如果左表的某行在右表中沒有匹配行, 則在相關聯的結果集中右表的所有選擇列均為空值,命令如下:
select stu.*, course.* from stu left outer join course on(stu .id=course .sid);
右連線
右連線是左向外連線的反向連線,將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。命令如下:
select stu.*, course.* from stu right outer join course on(stu .id=course .sid);
全連線
全連線返回左表和右表中的所有行。當某行在另一表中沒有匹配行時,則另一個表的選擇列表包含空值。如果表之間有匹配行,則整個結果集包含基表的資料值。命令如下:
select stu.*, course.* from stu full outer join course on(stu .id=course .sid);
半連線
半連線是 Hive 所特有的, Hive 不支援 in 操作,但是擁有替代的方案; left semi join, 稱為半連線, 需要注意的是連線的表不能在查詢的列中,只能出現在 on 子句中。命令如下:
select stu.* from stu left semi join course on(stu .id=course .sid);
三、Spark與Hive整合
1.安裝Spark
為了讓Spark能夠訪問Hive,必須為Spark新增Hive支援。Spark官方提供的預編譯版本,通常是不包含Hive支援的,需要採用原始碼編譯,編譯得到一個包含Hive支援的Spark版本。首先測試一下電腦上已經安裝的Spark版本是否支援Hive
spark-shell
這樣就啟動進入了spark-shell,然後輸入:
import org.apache.spark.sql.hive.HiveContext
如果報錯,則說明spark無法識別org.apache.spark.sql.hive.HiveContext,這時我們就需要採用原始碼編譯方法得到支援hive的spark版本。
下載原始碼檔案
進入官網後,可以按照下圖配置選擇“2.1.0(Dec 28, 2016)”和“SourceCode”,然後,在圖中紅色方框內,有個“Download Spark: spark-2.1.0.tgz”的下載連結,點選該連結就可以下載Spark原始碼檔案了。
編譯過程
cd /home/hadoop/spark-2.0.2 ./dev/make-distribution.sh —tgz —name h27hive -Pyarn -Phadoop-2.7 -Dhadoop.version=2.7.1 -Phive -Phive-thriftserver -DskipTests
或可選擇直接安裝已編譯好的版本,把下好的
spark-2.0.2-bin-h27hive.tgz
放到下載資料夾內Spark解壓安裝
cd ~/下載 # 進入下載資料夾 sudo tar -zxf spark-2.0.2-bin-h27hive.tgz -C /usr/local # 安裝至/usr/local資料夾內 cd /usr/local # 進入/usr/local資料夾 sudo mv ./spark-1.4.0-bin-hadoop2.4/ ./spark # 更名為spark sudo chown -R hadoop ./spark # 修改sqoop許可權
新增環境變數
注,如果電腦上已經裝了另一個spark,此處可不增設環境變數
vim ~/.profile
新增spark安裝路徑
#spark export SPARK_HOME=/usr/local/spark export PATH=$PATH:$SPARK_HOME/bin
並儲存修改
source ~/.profile
修改Spark配置
cd /usr/local/spark/conf # 進入spark配置資料夾 sudo cp spark-env.sh.template spark-env.sh # 複製spark-env臨時檔案為配置檔案 vim spark-env.sh # 編輯spark配置檔案
新增下述配置資訊
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
有了上面的配置資訊以後,Spark就可以把資料儲存到Hadoop分散式檔案系統HDFS中,也可以從HDFS中讀取資料。如果沒有配置上面資訊,Spark就只能讀寫本地資料,無法讀寫HDFS資料。在偽分散式模式下僅測試是否安裝成功時,其他配置暫時可不做修改。
執行樣例程式
cd /usr/local/spark bin/run-example SparkPi 2>&1 | grep "Pi is"
放置Hive配置檔案
為了讓Spark能夠訪問Hive,需要把Hive的配置檔案hive-site.xml拷貝到Spark的conf目錄下
cd /usr/local/spark/conf cp /usr/local/hive/conf/hive-site.xml . ll
測試是否整合成功
spark-shell
然後輸入
import org.apache.spark.sql.hive.HiveContext
2.在Hive中建立資料庫和表
首先啟動MySQL資料庫:
service mysql start
由於Hive是基於Hadoop的資料倉庫,使用HiveQL語言撰寫的查詢語句,最終都會被Hive自動解析成MapReduce任務由Hadoop去具體執行,因此,需要啟動Hadoop,然後再啟動Hive。
然後執行以下命令啟動Hadoop:
start-all.sh
Hadoop啟動成功以後,可以再啟動Hive:
hive
然後在hive命令提示符內進行操作
create database if not exists sparktest;
show databases;
create table if not exists sparktest.student(
> id int,
> name string,
> gender string,
> age int);
use sparktest;
show tables;
insert into student values(1,'Xueqian','F',23);
insert into student values(2,'Weiliang','M',24);
select * from student;
通過上面操作,我們就在Hive中建立了sparktest.student表,這個表有兩條資料。
3.連線Hive讀寫資料
現在我們看如何使用Spark讀寫Hive中的資料。注意,操作到這裡之前,你一定已經按照前面的各個操作步驟,啟動了Hadoop、Hive、MySQL和spark-shell(包含Hive支援)。在進行程式設計之前,我們需要做一些準備工作,我們需要修改“/usr/local/sparkwithhive/conf/spark-env.sh”這個配置檔案:
cd /usr/local/spark/conf/
vim spark-env.sh
這樣就使用vim編輯器打開了spark-env.sh這個檔案,輸入下面內容:
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export CLASSPATH=$CLASSPATH:/usr/local/hive/lib
export SCALA_HOME=/usr/local/scala
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export HIVE_CONF_DIR=/usr/local/hive/conf
export SPARK_CLASSPATH=$SPARK_CLASSPATH:/usr/local/hive/lib/mysql-connector-java-5.1.26-bin.jar
儲存並推出,然後啟動spark-shell
spark-shell
然後在shell介面中輸入
import org.apache.spark.sql.Row
import org.apache.spark.sql.SparkSession
case class Record(key: Int, value: String)
val warehouseLocation = "spark-warehouse"
val spark = SparkSession.builder().appName("Spark Hive Example").config("spark.sql.warehouse.dir", warehouseLocation).enableHiveSupport().getOrCreate()
import spark.implicits._
import spark.sql
sql("SELECT * FROM sparktest.student").show()
然後再開一個命令列介面,啟動hive介面,檢視spark-shell中對hive表插入資料的結果
hive
然後輸入
use sparktest;
select * from student;
然後在spark-shell中進行資料插入
import java.util.Properties
import org.apache.spark.sql.types._
import org.apache.spark.sql.Row
//下面我們設定兩條資料表示兩個學生資訊
val studentRDD = spark.sparkContext.parallelize(Array("3 Rongcheng M 26","4 Guanhua M 27")).map(_.split(" "))
//下面要設定模式資訊
val schema = StructType(List(StructField("id", IntegerType, true),StructField("name", StringType, true),StructField("gender", StringType, true),StructField("age", IntegerType, true)))
//下面建立Row物件,每個Row物件都是rowRDD中的一行
val rowRDD = studentRDD.map(p => Row(p(0).toInt, p(1).trim, p(2).trim, p(3).toInt))
//建立起Row物件和模式之間的對應關係,也就是把資料和模式對應起來
val studentDF = spark.createDataFrame(rowRDD, schema)
//檢視studentDF
studentDF.show()
//下面註冊臨時表
studentDF.registerTempTable("tempTable")
sql("insert into sparktest.student select * from tempTable")
然後切換到hive視窗,檢視資料庫內容變化
select * from student;
能夠查詢到新增資料結果,則說明操作成功。