前几天使用sqoop将hdfs的数据导入mysql中,发现中文导进去后会乱码,我的执行命令是:
sqoop export --connect "jdbc:mysql://10.19.157.*****?useUnicode=true&characterEncoding=utf-8" --table msg_rule_copy --username root --password root*** --export-dir $path --hadoop-home $home --direct
刚开始以为是mysql编码没有设置好的问题,后面发现mysql是没问题的,都是uft-8
然后用sqoop 测试一下sql语句插入,发现也是没问题的。
sqoop eval --connect "jdbc:mysql://10.19.*****" --username root --p --query "insert into msg_rule_copy(module,levelId) values(‘中文‘,‘90‘);"
jdbc执行sql语句没问题,我就想,除非sqoop他不是用jdbc来插入数据的,后面突然想起一个快速执行的参数:
--direct Use direct
export fast
path
我把这个参数去掉,果然好了。
结论:--direct快速执行模式不支持中文插入。