📜  Sqoop-导出

📅  最后修改于: 2020-11-29 08:22:56             🧑  作者: Mango


本章介绍如何将数据从HDFS导出回RDBMS数据库。目标表必须存在于目标数据库中。作为Sqoop输入的文件包含记录,这些记录称为表中的行。读取这些记录并将它们解析为一组记录,并使用用户指定的定界符定界。

缺省操作是使用INSERT语句将所有记录从输入文件插入数据库表。在更新模式下,Sqoop生成UPDATE语句,该语句将现有记录替换到数据库中。

句法

以下是导出命令的语法。

$ 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;

如果给定数据成功存储,则可以找到下表给定员工数据。

+------+--------------+-------------+-------------------+--------+
| 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     |
+------+--------------+-------------+-------------------+--------+