Sqoop - 导出
本章介绍如何将数据从 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 | +------+--------------+-------------+-------------------+--------+