將數(shù)據(jù)從HDFS導(dǎo)出到RDBMS數(shù)據(jù)庫
導(dǎo)出前,目標(biāo)表必須存在于目標(biāo)數(shù)據(jù)庫中。
◆ 默認(rèn)操作是從將文件中的數(shù)據(jù)使用INSERT語句插入到表中
◆ 更新模式下,是生成UPDATE語句更新表數(shù)據(jù)
語法
以下是export命令語法。
$ sqoop export (generic-args) (export-args)
示例
數(shù)據(jù)是在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
首先需要手動創(chuàng)建mysql中的目標(biāo)表
create database userdb;
grant all privileges on userdb.* to 'sqoop'@'%' identified by 'sqoop';
grant all privileges on userdb.* to 'sqoop'@'localhost' identified by 'sqoop';
grant all privileges on userdb.* to 'sqoop'@'hq555' identified by 'sqoop';
flush privileges;
$ mysql
mysql> USE db;
// 創(chuàng)建表
mysql> CREATE TABLE employee (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(20),
deg VARCHAR(20),
salary INT,
dept VARCHAR(10));
然后執(zhí)行導(dǎo)出命令
bin/sqoop export --connect jdbc:mysql://hq666:3306/sqoop_data --username hive --password hive --table employee --export-dir /input/ --input-fields-terminated-by ','
驗(yàn)證表mysql命令行。
mysql>select * from employee;
如果給定的數(shù)據(jù)存儲成功,那么可以找到數(shù)據(jù)在如下的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 |
+------+--------------+-------------+-------------------+--------+