本章介紹如何將資料從HDFS匯出到RDBMS資料庫。目標表必須存在於目標資料庫中。這是作為輸入到Sqoop的檔案包含記錄,這被稱為在表中的行。那些被讀取並解析成一組記錄和分隔與使用者指定的分隔符。
預設的操作是從輸入檔案到資料庫表,使用INSERT語句插入所有記錄。在更新模式,Sqoop生成替換現有記錄到資料庫的UPDATE語句。
以下是export命令語法。
$ sqoop export (generic-args) (export-args) $ sqoop-export (generic-args) (export-args)
在HDFS檔案中的員工資料的一個例子,。員工資料是在HDFS“EMP/”目錄的emp_data檔案中。所述emp_data如下。
1201, gopal, manager, 50000, TP 1202, manisha, preader, 50000, TP 1203, kalil, php dev, 30000, AC 1204, prasanth, php dev, 30000, AC 1205, kranthi, admin, 20000, TP 1206, satish p, grp des, 20000, GR
它是強制性的,該表手動匯出建立並且存在於從要匯出的資料庫中。
下面的查詢被用來建立MySQL命令列表'employee'。
$ mysql mysql> USE db; mysql> CREATE TABLE employee ( id INT NOT NULL PRIMARY KEY, name VARCHAR(20), deg VARCHAR(20), salary INT, dept VARCHAR(10));
下面的命令是用來匯出表資料(這是在HDFS emp_data檔案)到MySQL資料庫伺服器DB資料庫的employee表中。
$ sqoop export \ --connect jdbc:mysql://localhost/db \ --username root \ --table employee \ --export-dir /emp/emp_data
下面的命令是用來驗證表mysql命令列。
mysql>select * from employee;
如果給定的資料儲存成功,那麼可以找到資料在如下的employee表。
+------+--------------+-------------+-------------------+--------+ | Id | Name | Designation | Salary | Dept | +------+--------------+-------------+-------------------+--------+ | 1201 | gopal | manager | 50000 | TP | | 1202 | manisha | preader | 50000 | TP | | 1203 | kalil | php dev | 30000 | AC | | 1204 | prasanth | php dev | 30000 | AC | | 1205 | kranthi | admin | 20000 | TP | | 1206 | satish p | grp des | 20000 | GR | +------+--------------+-------------+-------------------+--------+