Sqoop导入结果中的额外反斜杠

时间:2016-06-02 03:14:00

标签: hive sqoop

目前我正在使用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/addr

vertica DB中的数据:

SRC_SYS_CD  CTRY_CD ADDR_ID ADDR_TYP_CD ADDR_STR_1_LG_NM
123456      NZ      107560  NULL        C\ - 108 Waiatarua Road

数据显示在Hive 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 '\"'

但这不起作用。

1 个答案:

答案 0 :(得分:0)

对于sqoop支持直接连接的数据库,使用 - 直接并删除 - hive-drop-import-delims 将按原样导入数据。

This link lists DB that sqoop supported

虽然我已确认Vertica支持直接连接但未列出。