2016-06-02 9 views
0

現在、私はSqoopを使用してHP VerticaデータベースからHiveにデータをインポートしていますが、特殊文字を含むカラムの場合、結果はVertica DBのデータと異なります。コードはSqoopの余分なバックスラッシュインポート結果

です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 

データ:

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のインポート後にバックスラッシュ(¥)が1つ追加されたことです。バックスラッシュ(\)を持たない他の列は変更されませんでした。

頂点にNULLがあるので、 - null-string '\\ N' --null-non-string '\\ N'を使用する必要があります。

私はのようないくつかの他のオプションを試してみた:

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

をしかし、それは動作しません。そのままsqoopが直接接続をサポートしていることのDBについては

答えて

0

、 --direct を使用して--hiveドロップインポート-delimsを削除は、データをインポートします。

This link lists DB that sqoop supported

私はにVerticaは、直接接続が、記載されていないと、サポートされて確認されました間。

関連する問題