Momentan verwende ich Sqoop, um Daten von HP Vertica Datenbank zu Hive zu importieren, für einige Spalten mit Sonderzeichen unterscheidet sich das Ergebnis von den Daten in der Vertica DB, hier ist der Code:Extra Backslash in Sqoop Import Ergebnis
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
Daten in 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
Daten zeigten in 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
Der einzige Unterschied besteht in der Spalte ADDR_STR_1_LG_NM, die nach dem shoop-Import einen umgekehrten Schrägstrich (\) hinzugefügt hat. Andere Spalten, die keinen umgekehrten Schrägstrich (\) haben, wurden nicht geändert.
Da in Vertica NULL ist, müssen wir --null-string '\\ N' --null-non-string '\\ N' verwenden.
Ich habe ein paar andere Optionen ausprobiert wie:
--escaped-by \\ --optionally-enclosed-by '\"'
Aber das funktioniert nicht.