用sqoop将hive导出到mysql和mysql导入hive

sqoop的安装和使用教程参考博客:https://blog.csdn.net/qq_42502354/article/details/106727502,

测试是否连接mysql:bin/sqoop list-databases --connect jdbc:mysql://linux-centos7-03:3306/ --username root --password 123456

将hive数据导出到mysql数据库:

bin/sqoop export --connect jdbc:mysql://linux-centos7-03:3306/cmy --username root --password 123456 --table table1 --export-dir '/user/hive/warehouse/cmy.db/table1' --fields-terminated-by ',' --input-null-non-string '\\N';

注释:# --fields-terminated-by ',' 分隔符 # --input-null-non-string 忽略表数据中的空值

 

将mysql数据导入到hive数据库:

bin/sqoop import --connect jdbc:mysql://linux-centos7-03:3306/cmy --username root --password 123456 --table data -m 1 --hive-import --hive-table cmy.data --fields-terminated-by ',';

注释:-m 1 一定要加,不然会报错

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------(分割线)

今天还是用这些代码把数据导出来,但是一直给我报错,以前怎么没发现错误,捣鼓了两个小时才发现,在hive中创建表时用的是create table tablename as select …语句,而且没有指定分隔符,但是hive表默认的分隔符是“\001”,但是我还是用的是逗号分隔符,哎。。

bin/sqoop export --connect jdbc:mysql://linux-centos7-03:3306/cmy --username root --password 123456 --table jduserlevelname_out --export-dir '/user/hive/warehouse/jingdong.db/userlevelname_out' --fields-terminated-by '\001' --input-null-non-string '\\N';

这个语句就是正确的了

 

posted @ 2022-10-13 10:10  KongLong_cm  阅读(219)  评论(0)    收藏  举报