我正在尝试从Oracle 11g R2(import-all-tables)导入所有表,而我遇到了CLOB类型的问题。 (使用CDH 5.9,Sqoop 1.4.6-cdh5.9.1)
首先尝试:
sqoop import-all-tables --connect ... --hive-import --hive-overwrite --as-parquet-file --autoreset-to-one-mapper -m XX --direct
正确导入表,直到找到一个带有CLOB列的表并抛出以下错误:无法转换为SQL类型2005。
第二次尝试:
sqoop import-all-tables -D oraoop.disabled=true --connect ... --hive-import --hive-overwrite --as-parquet-file --autoreset-to-one-mapper -m XX
我得到了同样的错误。
第三次尝试
sqoop import --connect ... --hive-import --hive-overwrite --as-parquet-file --autoreset-to-one-mapper -m XX --table MyClobTable --map-column-java CLOBCOL=String
这样可行,所以我尝试对所有表格进行相同的处理:
sqoop import-all-tables --connect ... --hive-import --hive-overwrite --as-parquet-file --autoreset-to-one-mapper -m XX --map-column-java CLOBCOL=String
这失败了,因为我的一个表中只有一个CLOBCOL列。
有没有办法使用import-all-tables,修复2005 SQL类型错误,或者告诉Sqoop如何“动态”解决它?
谢谢!
答案 0 :(得分:0)
你不应该使用--direct命令,因为sqoop文件说“Sqoop的直接模式不支持导入BLOB,CLOB或LONGVARBINARY列。对这些列使用基于JDBC的导入;不提供--direct参数到导入工具。“