分享

sqoop导入数据乱码如何解决

king139 发表于 2014-10-24 17:31:47 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 16 50951
通过sqoop卸载informix中的unl到hdfs文件系统中,因为有编码问题,导致原本在informix(GBK编码)数据库中长度为20的数据,通过sqoop导入到oracle(UTF8编码)中,export过程中包字段长度不够错误。因为数据中有中文字符,在oracle中用lengthB函数查看长度,发现长度是22。将oracle库中的字段长度调整为22以后问题解决,但是觉得这样好别扭,不知道大家有没有更好的解决方案?

已有(16)人评论

跳转到指定楼层
xuanxufeng 发表于 2014-10-24 17:50:09
做一下数据类型映射



回复

使用道具 举报

desehawk 发表于 2014-10-24 17:51:18
解决问题,才是王道,数据类型转换,即使自己不做,也是系统帮忙给做了。问题就在哪里,要么系统帮忙解决,要么自己解决
回复

使用道具 举报

bioger_hit 发表于 2014-10-24 17:53:13
oracle提供大数据相关的插件,可以找找看。能解决问题才是王道,甭管黑猫、白猫、画画毛
回复

使用道具 举报

pig2 发表于 2014-10-24 19:46:23
可以在导入的时候,做一下编码转换



回复

使用道具 举报

credit 发表于 2015-12-1 18:30:52
pig2 发表于 2014-10-24 19:46
可以在导入的时候,做一下编码转换

如何在sqoop导入的时候做编码转换,是从oracle导入hive
回复

使用道具 举报

starrycheng 发表于 2015-12-2 13:20:05
credit 发表于 2015-12-1 18:30
如何在sqoop导入的时候做编码转换,是从oracle导入hive

[mw_shl_code=bash,true]./sqoop import
--connect jdbc:oracle:thin:@192.168.1.10:1521:crmdb
--username aaa -P
--query "select  convert(Columns,'UTF8','AMERICAN_AMERICA.ZHS16GBK') from testtable where \$CONDITIONS"
-m 1  
--append
--target-dir apps/as/hive/testtable[/mw_shl_code]

回复

使用道具 举报

credit 发表于 2015-12-2 14:36:55
starrycheng 发表于 2015-12-2 13:20
[mw_shl_code=bash,true]./sqoop import
--connect jdbc:oracle:thin:@192.168.1.10:1521:crmdb
--us ...

已经试过了,好像不好使啊sqoop import --connect jdbc:oracle:thin:@ip:dname --username x --password x --query "select convert(wspzxh,'UTF-8','US7ASCII'),convert(nsrdzdah,'UTF-8','US7ASCII'),convert(fzczt_dm,'UTF-8','US7ASCII'),convert(rd_jbr_dm,'UTF-8','US7ASCII'),convert(rd_fzr,'UTF-8','US7ASCII'),convert(rd_yj,'UTF-8','US7ASCII'),convert(rd_rq,'UTF-8','US7ASCII'),convert(fzcjc_wspzxh,'UTF-8','US7ASCII'),convert(fzcjc_jbr_dm,'UTF-8','US7ASCII'),convert(fzcjc_yj,'UTF-8','US7ASCII'),convert(fzcjc_rq,'UTF-8','US7ASCII'),convert(ggnr,'UTF-8','US7ASCII'),convert(ggjbr_dm,'UTF-8','US7ASCII'),convert(gglrr_dm,'UTF-8','US7ASCII'),convert(ggrq,'UTF-8','US7ASCII'),convert(zx_wspzxh,'UTF-8','US7ASCII'),convert(zx_jbr_dm,'UTF-8','US7ASCII'),convert(zx_yj,'UTF-8','US7ASCII'),convert(zxrq,'UTF-8','US7ASCII'),convert(nsr_swjg_dm,'UTF-8','US7ASCII'),convert(swjg_dm,'UTF-8','US7ASCII'),convert(lrr_dm,'UTF-8','US7ASCII'),convert(lrrq,'UTF-8','US7ASCII'),convert(xgr_dm,'UTF-8','US7ASCII'),convert(xgrq,'UTF-8','US7ASCII'),convert(sdh_bz,'UTF-8','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


回复

使用道具 举报

starrycheng 发表于 2015-12-2 17:52:13
credit 发表于 2015-12-2 14:36
已经试过了,好像不好使啊sqoop import --connect jdbc:oracle:thin:@ip:dname --username x --password  ...

具体什么情况,发现截图。是追加,还是直接导入。
回复

使用道具 举报

credit 发表于 2015-12-2 18:24:13
starrycheng 发表于 2015-12-2 17:52
具体什么情况,发现截图。是追加,还是直接导入。

直接导入,导入过程没有报错,但是查看数据时候还是乱码
QQ图片20151202182105.png
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条