Sqoop教程

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     |
+------+--------------+-------------+-------------------+--------+
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4