Sqoop的数据导出

2023-02-25 15:19:05 浏览数 (1)

将数据从HDFS导出到RDBMS数据库

导出前,目标表必须存在于目标数据库中。

◆ 默认操作是从将文件中的数据使用INSERT语句插入到表中

◆ 更新模式下,是生成UPDATE语句更新表数据

语法

以下是export命令语法。

代码语言:javascript复制
$ sqoop export (generic-args) (export-args) 

示例

数据是在HDFS 中“EMP/”目录的emp_data文件中。所述emp_data如下:

代码语言:javascript复制
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中的目标表

代码语言:javascript复制
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;


// 创建表
mysql> CREATE TABLE employee ( 

  id INT NOT NULL PRIMARY KEY, 

  name VARCHAR(20), 

  deg VARCHAR(20),

  salary INT,

  dept VARCHAR(10));

然后执行导出命令

代码语言:javascript复制
bin/sqoop export --connect jdbc:mysql://hq666:3306/sqoop_data --username hive --password hive --table employee --export-dir /input/ --input-fields-terminated-by ',' 

验证表mysql命令行。

代码语言:javascript复制
mysql>select * from employee;

如果给定的数据存储成功,那么可以找到数据在如下的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 |

------ -------------- ------------- ------------------- --------

0 人点赞