2016-06-02 5 views
0

В настоящее время я использую 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 '\"' 

Но это не работает.

ответ

0

Для блоков данных, что sqoop поддерживает прямое соединение, использовать --direct и удалить --hive-дроп-импорт-delims будет импортировать данные как есть.

This link lists DB that sqoop supported

В то время как я уже подтвердил Vertica поддерживается прямое соединение, но нет в списке.

Смежные вопросы