目前我正在使用Sqoop将HP Vertica数据库中的数据导入Hive,对于某些带有特殊字符的列,结果与Vertica DB中的数据不同,代码如下:
sqoop import --driver com.vertica.jdbc.Driver --connect jdbc:vertica://db.foo.com/corp \
--username xx --P --where 'SRC_SYS_CD=xxx' --null-string '\\N' --null-non-string '\\N' \
--m 1 --fields-terminated-by '\001' --hive-drop-import-delims --table addr \
--target-dir /xxxx/addrvertica DB中的数据:
SRC_SYS_CD CTRY_CD ADDR_ID ADDR_TYP_CD ADDR_STR_1_LG_NM
123456 NZ 107560 NULL C\ - 108 Waiatarua RoadHive DB中显示的数据:
SRC_SYS_CD CTRY_CD ADDR_ID ADDR_TYP_CD ADDR_STR_1_LG_NM
123456 NZ 107560 NULL C\\ - 108 Waiatarua Road唯一的区别是列ADDR_STR_1_LG_NM,在sqoop导入之后,添加了一个反斜杠()。而其他没有反斜杠()的列则没有更改。
因为vertica中有NULL,所以我们必须使用--null-string '\N‘--null-non-string '\N’。
我已经尝试了其他一些选项,比如:
--escaped-by \\ --optionally-enclosed-by '\"'但这并不管用。
发布于 2016-06-27 13:38:11
对于--hive-drop-import-delims支持直接连接的DB,使用-- direct 和remove and将按原样导入数据。
This link lists DB that sqoop supported
虽然我已经确认Vertica支持直接连接,但没有列出。
https://stackoverflow.com/questions/37582011
复制相似问题