我陷入了僵局。 在我的资料中,我有一栏包含一个特殊字符。但是,当我使用sqoop获取数据时,特殊字符将更改为其他字符。
在我的源oracle表中,我有:-
jan 2005 �DSX�
但是当将数据压缩到配置单元表时,它将特殊字符更改为其他字符
jan 2005 �DSXÙ
请提出一些解决方案,以便获得与源(Oracle)表中完全相同的特殊字符。
sqoop import \
--connect "jdbc:oracle:thin:@source connection details" \
--connection-manager org.apache.sqoop.manager.OracleManager \
--username abc \
--password xyz \
--fields-terminated-by '\001' \
--null-string '' \
--null-non-string '' \
--query "select column_name from wxy.ztable where \$CONDITIONS " \
--target-dir "db/dump/dir" \
--split-by "col1" \
-m 1
答案 0 :(得分:0)
如果您在oracle表中看到jan 2005 �DSX�
,则您对oracle表的编码可能也未正确设置。我在oracle方面经验不足,因此无法告诉您如何进行检查,但是您可以使用oracle DBA进行检查。
我可以告诉你的是,Hadoop使用UTF-8
编码,因此您首先需要将oracle转换为UTF-8
,然后导入数据。