使用包含各种文本的字段通过sqoop从sql server导入和导出数据

z9gpfhce  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(412)

我正在尝试通过hdfs/sqoop将表从sqlserver导入和导出到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中。。。
我使用import all表来导入,而不是逐个导入,否则我会考虑对那些特定的表/列使用--map column java。。?
但是,由于上述原因,我尝试的任何组合都会导致一些表无法导出,因为它们的列数不同。
我希望这是有意义的,否则我更愿意用一些实际数据(匿名,因为它们包含敏感数据)来详细说明
提前谢谢你的建议。

guicsvcw

guicsvcw1#

好吧,我终于用以下方法解决了这个问题:
在sqoop import all tables部分中:

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

在sqoop导出部分:

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

一切都搞定了。
现在我的记忆耗尽了,但那完全是另一回事;-)
希望能对其他人有所帮助。

相关问题