如何将数据从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)); |
$ sqoop export \ |
--connect jdbc:mysql://localhost/db \ |
--username root \ |
--table employee \ |
--export-dir /emp/emp_data |
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 | |
+------+--------------+-------------+-------------------+--------+ |