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

63lcw9qa  于 2021-06-03  发布在  Sqoop
关注(0)|答案(1)|浏览(350)

目前我正在使用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数据库中的数据:

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\u str\u 1\u lg\u nm列,在sqoop导入之后,添加了一个反斜杠(\)。而其他没有反斜杠(\)的列没有更改。
因为vertica中有null,所以必须使用--null string'\n'--null non string'\n'。
我尝试过其他一些选择,比如:

--escaped-by \\ --optionally-enclosed-by '\"'

但这行不通。

egmofgnx

egmofgnx1#

对于sqoop支持直接连接的dbs,使用--direct和remove--hive drop import delims将按原样导入数据。
此链接列出了sqoop支持的数据库
虽然我已经确认vertica支持direct connect,但没有列出。

相关问题