用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 @   KongLong_cm  阅读(210)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示