Sqoop - Export

本章介绍如何将数据从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 文件中)导出到db中的employee表Mysql数据库服务器数据库.

$ sqoop export \
--connect jdbc:mysql://localhost/db \
--username root \
--table employee \ 
--export-dir /emp/emp_data

以下命令用于验证mysql命令行中的表.

mysql>select * from 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     |
+------+--------------+-------------+-------------------+--------+