datax 导入数据中文乱码_sqoop导入oracle数据到hive字符集不同导致中文乱码问题

最近在做sqoop导入oracle数据到hive字符集乱码问题,虽然没有解决,但是现在将一些尝试的过程发布,供大家参考,以后有遇到这种问题的供大家参考少走弯路。

oracle里面的字符集是us7ascii,导入到hive里面后中文乱码hive环境(元数据为mysql)字符集是utf,在命令里面使用convert(rd_yj,'UTF8','US7ASCII')和utl_raw.cast_to_varchar2(utl_raw.cast_to_raw(rd_yj))做转换都不行,

这个是命令:sqoop import --connect jdbc:oracle:thin:@ip:1521:dname --username x --password x --query "select convert(rd_yj,'UTF8','US7ASCII') from dj_fzcgl where \$CONDITIONS"  -m 1 --target-dir /user/hive/warehouse/sichuan.db/dj_fzcgl_test --hive-table dj_fzcgl_test --hive-import --as-parquetfile

ps:其他oracle的库使用字符集是gbk hive导入不乱码;

考虑过修改数据库字符集(alter database character set  utf),但是数据库字符集建立后一般不改,修改字符集相当于重建数据库,而且已经导入的表不会因为修改字符集而重新编码;

可以考虑用文件入库,oracle的spool可以轻松实现将数据库导出到txt,重建数据库或者新建一个数据库实例,设置对应的字符集,oracle提供了sqlldr的工具可以快速

你可能感兴趣的:(datax,导入数据中文乱码)