Sqoop導出

本章介紹如何將數據從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 |
+------+--------------+-------------+-------------------+--------+