通过带有包含各种文本的字段的 sqoop 从 SQL 服务器导入和导出数据
Importing and exporting data from SQL Server via sqoop with fields containing various text
我正在尝试通过 HDFS/Sqoop 从 SQL 服务器向 DB2 导入和导出表。
我正在使用
--fields-terminated-by '[=11=]1'
--lines-terminated-by '[=11=]2'
--hive-replace-delims '<hivedelims>'
and/or --hive-drop-import-delims
我几乎可以完成所有事情,但是.....
SQL 服务器中的某些列属于 nvarchar(max)
类型,并且包含文本形式的数据,例如
"...[CR][LF] ..."
或 XML-包含竖线字符的文本:“|”
或包含 \n 或 [LF] 或 [CR] 等的简单文本等
显然该列可以容纳任何类型的文本....
我想将这些类型的单元格作为一个块导入到 HDFS 中,然后将它们同样作为一个块导出到 DB2 中...
我正在使用 import-all-tables 而不是一个一个地导入,否则我想过使用 --map-column-java 来处理那些特定的 tables/columns ..?
但是,由于上述原因,我尝试过的任何组合都会给我留下一些无法导出的表格,因为它们是用不同数量的列解释的。
我希望它有意义,否则我非常愿意详细说明一些实际数据(匿名,因为它们包含敏感数据)
提前感谢您提出任何建议。
好的,我终于用以下方法解决了它:
在 sqoop import-all-tables 部分:
--hive-drop-import-delims \
--fields-terminated-by '[=10=]1' \
--lines-terminated-by '\n' \
在 sqoop 导出部分:
--input-fields-terminated-by '[=11=]1' \
--input-lines-terminated-by '\n' \
一切都搞定了。
现在我 运行 失忆了,但这完全是另外一回事了 ;-)
希望对其他人有所帮助。
我正在尝试通过 HDFS/Sqoop 从 SQL 服务器向 DB2 导入和导出表。
我正在使用
--fields-terminated-by '[=11=]1'
--lines-terminated-by '[=11=]2'
--hive-replace-delims '<hivedelims>'
and/or --hive-drop-import-delims
我几乎可以完成所有事情,但是.....
SQL 服务器中的某些列属于 nvarchar(max)
类型,并且包含文本形式的数据,例如
"...[CR][LF] ..."
或 XML-包含竖线字符的文本:“|”
或包含 \n 或 [LF] 或 [CR] 等的简单文本等
显然该列可以容纳任何类型的文本....
我想将这些类型的单元格作为一个块导入到 HDFS 中,然后将它们同样作为一个块导出到 DB2 中...
我正在使用 import-all-tables 而不是一个一个地导入,否则我想过使用 --map-column-java 来处理那些特定的 tables/columns ..?
但是,由于上述原因,我尝试过的任何组合都会给我留下一些无法导出的表格,因为它们是用不同数量的列解释的。
我希望它有意义,否则我非常愿意详细说明一些实际数据(匿名,因为它们包含敏感数据)
提前感谢您提出任何建议。
好的,我终于用以下方法解决了它:
在 sqoop import-all-tables 部分:
--hive-drop-import-delims \
--fields-terminated-by '[=10=]1' \
--lines-terminated-by '\n' \
在 sqoop 导出部分:
--input-fields-terminated-by '[=11=]1' \
--input-lines-terminated-by '\n' \
一切都搞定了。
现在我 运行 失忆了,但这完全是另外一回事了 ;-)
希望对其他人有所帮助。