sqoop导出 建表_sqoop导出工具

本文介绍了如何使用sqoop工具将HDFS上的数据导出到MySQL数据库中,包括设置export-dir、解决中文乱码问题、使用update-key和update-mode进行更新和插入操作,以及指定输入字段分隔符和导出列。
摘要由CSDN通过智能技术生成

sqoop的导出工具是把HDFS上文件中的数据导出到mysql中

mysql中的表

现在在linux上创建一个文件,并把这个文件上传到hdfs上

cat person.txt7,no7,77

8,no8,88$ hadoop fs-mkdir person_export

$ hadoop fs-put -f person.txt person_export

$ hadoop fs-ls person_export

Found1items-rw-r--r-- 3 18232184201 supergroup 18 2016-07-26 17:16 person_export/person.txt

一、export-dir

使用export-dir来指定导出的目录,会导出该目录下的所有文件。

$ sqoop export --connect jdbc:mysql://localhost:3306/test --username root --password 123456 --table person -m 1 --export-dir person_export

最终的效果可以在mysql中的表体现:

二、插入中文乱码问题

hdfs上的内容:

3,第7个,77

4,第8个,88

再次执行上面一样的export命令,在mysql中就会产生乱码:

可以使用下面的命令来解决乱码问题:

sqoop export --connect "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8" --username root --password 123456 --table person -m 1 --export-dir person_export

完成之后mysql的记录是:

三、update-key update-mode

需求hdfs文件中存在的记录做更新,不存在的记录则插入

hdfs上的文件:

,第10个,100,第11个,110

3,第3个,30

4,第4个,40

执行命令:

sqoop export --connect "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8" --username root --password 123456 --table person -m 1 --export-dir person_export --update-key id --update-mode allowinsert

需要注意的是,update-mode有两种,一种是uodateonly,一种是allowinsert

执行完成之后,mysql中的数据:

四、input-fields-terminated-by

input-fields-terminated-by可以用来指定hdfs上文件的分隔符,默认是逗号

HDFS上的数据格式(以空格切分):

aaa 100bbb110

执行下面的命令来导出:

sqoop export --connect "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8" --username root --password 123456 --table person -m 1 --export-dir person_export --input-fields-terminated-by ' '

导出的结果是:

五、columns

使用colums来指定导出到mysql的列

hdfs上的数据格式:

aaa

bbb

执行下面的命令:

sqoop export --connect "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8" --username root --password 123456 --table person -m 1 --export-dir person_export --input-fields-terminated-by ' ' --columns="id,name"

执行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值