Sqoop导入导出数据命令参数详解

注:转自 https://blog.csdn.net/wtzhm/article/details/81810159

 

sqoop 导入导出数据命令参数详解

1. 从关系数据库中导入到hdfs中

sqoop import \

--connect<jdbc-uri> 指的是连接地址,这里面是mysql服务器的地址;

--username<username> 数据库用户名

--password<password> 数据库密码

--target-dir<dir> 导入到哪一个HDFS目录

--table<table-name> 导入关系型数据库哪一张表的数据

--as-textfile# 导入为文本文件

--as-avrodatafile#导入为avro文件

--as-sequencefile#导入为序列化文件

--as-parquetfile#导入为parquet文件

--columns<col1,col2...>从hive表导入哪几列

--delete-target-dir如果目标目录存在则删除

-m设置多少个mapper并发

-e|--query执行查询的sql语句

--WHERE可以进一步对查询语句过滤

-z|--compress启用压缩

--compression-codec:指定压缩类型,默认gzip

--null-string<null-string>:如果表字段是字符串类型,如果为空,导入HDFS则写入<null-string>

--null-non-string<null-string>: 如果表字段是非字符类型,如果为空,导入HDFS则写为<null-string

注意:指定的hdfs的目录不能存在,因为sqoop会将这个目录作为MapReduce的输出目录。

eg: 导入表数据子集
sqoop import \
--connect jdbc:mysql://mysqlhost:3306/userdb \
--username root \
--password root \
--table usertable \
--where "name='tom' and age=15" \
--target-dir /user/test \
--m 1;

2. 从关系书库中导入到hive表中

sqoopimport \

–connectjdbc:mysql://hadoop-all-01:3306/hadoop \

–usernamehive \

–passwordhive \

–hive-import\

–create-hive-table\

–tableemployee \

–hive-overwrite\

–fields-terminated-by”,” \

–lines-terminated-by”\n” \

–hive-tablehadoop.employee

–hive-import: 表示导入导入到hive

–table:从关系型数据库哪一张表导入到hive,并且导入到的hdfs路径下不能包含这个名字,否则提示表已存在。原因在于他是先导入到hdfs的,在通过hive 的loaddata导入hive中去

–hive-overwrite:如果表已经存在,则覆盖数据,一般情况下,不会存在,如果有这个表,在导入的时候就会报错

–hive-table:导入到hive什么数据库的哪一张表,如果不指定数据库或者压根不指定这个参数,那么久会导入到default数据库下,默认表名和RMDBS的表名一样

3. 从HDFS导出数据到关系型数据库

语法:

sqoop export \

--connectjdbc  \

--username  \

--password  \

--driver  \

--columnscol1,col2,...... 导出到表哪几列

--direct:使用direct导出,速度更快

--export-dir<dir>: 从HDFS哪一个目录导出

-m<n>: 指定mapper个数

--table<table-name>:导出数据库哪一张表



解析输入参数:

--input-enclosed-by<char>: 设置输入字段的封闭字符

--input-escaped-by<char>:设置输入字段的转义字符

--input-fields-terminated-by<char>:HDFS文件字段分隔符

--input-lines-terminated-by<char>:HDFS文件换行符



输出格式化参数:

--enclosed-by<char>: 设置字段封闭符

--escaped-by<char>: 设置转义字符

--fields-terminated-by<char>: 设置每一字段分割符

--lines-terminated-by<char>: 设置每一行结束分割符

--mysql-delimiters:使用mysql默认的分隔符,fields:,  lines: \n  escaped-by: \

如果在hive表中该字段是字符串且为NULL,然后理解成为NULL而不是\N

--input-null-string<null-string>

如果在hive表中该字段是非字符串类型且为NULL,然后理解成为NULL而不是\N

--input-null-non-string<null-string>


**eg:**

sqoopexport \

--connectjdbc:mysql://hadoop-all-01:3306/hadoop \

--usernamehive \

--passwordhive \

--drivercom.mysql.jdbc.Driver \

--export-dir/user/hive/warehouse/hadoop.db/m_d \

--columns"id,country,city,phone" \

--tabledirector \

--num-mappers2 \

--direct\

--input-fields-terminated-by',' \

--input-null-string'\\N' \

--input-null-non-string'\\N'

4. Hive数据导入到RMDBS表

这个其实跟HDFS数据导入到RMDBS表一样,因为数据就是存储在HDFS上的

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值