通过sqoop从SQL Server导入和导出数据,其中的字段包含各种文本

时间:2018-07-30 15:50:31

标签: sql-server hadoop db2 hdfs sqoop

我正在尝试通过HDFS / Sqoop将表从SQL Server导入和导出到DB2。

我正在使用

--fields-terminated-by '\001' 
--lines-terminated-by '\002' 
--hive-replace-delims '<hivedelims>' 
and/or --hive-drop-import-delims 

我几乎可以完成所有工作,但是.....

SQL Server中的某些列的类型为nvarchar(max),并且包含诸如

之类的文本形式的数据。
"...[CR][LF] ..." 

或包含管道字符的XML文本:“ |”

或包含\ n或[LF]或[CR] ....等的简单文本。

显然,该列可以容纳任何类型的文本。...

我想将这类单元格作为一个块导入HDFS,并将它们同样作为一个块导出到DB2 ...

我正在通过使用导入所有表而不是一个一个地进行导入,否则我想到了对那些特定的表/列使用--map-column-java ..

但是,由于上述原因,我尝试使用的任何组合都使我留下了一些无法导出的表,因为它们使用不同的列数进行解释。

我希望这是有道理的,否则我更愿意详细说明一些实际数据(匿名,因为它们包含敏感数据)

提前感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

好的,我最终通过以下方法解决了该问题:

在sqoop导入所有表部分中:

--hive-drop-import-delims \
--fields-terminated-by '\001' \
--lines-terminated-by '\n' \

在sqoop导出部分:

--input-fields-terminated-by '\001' \
--input-lines-terminated-by '\n' \

那已经做好了一切。

现在我内存不足,但这完全是另一回事了;-)

希望对其他人有帮助。