В настоящее время я использую Sqoop для импорта данных из базы данных HP Vertica в Hive, для некоторого столбца со специальным символом результат отличается от данных в Vertica DB, вот код:Дополнительная обратная косая черта в результате импорта Sqoop
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
Данные показали в улей 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 '\"'
Но это не работает.