要将我的数据从HDFS导出到Postgres,我正在使用Sqoop(1.3.0-cdh3u4)。主要问题是我有一列ltree类型。
ERROR orm.ClassWriter: Cannot resolve SQL type 1111
ERROR orm.ClassWriter: No Java type for SQL type 1111 for column path
即使使用--map-column-java强制进行字符串解析,Sqoop也无法导出。
java.io.IOException: org.postgresql.util.PSQLException: ERROR: column "path" is of type ltree but expression is of type character varying
Hint: You will need to rewrite or cast the expression.
Position: 106
有什么想法吗?
答案 0 :(得分:1)
在将数据导入CSV时,Sqoop不知道如何将这些类型强制转换为文本。您可以在Sqoop中添加对它们的支持...或者编写一个PostgreSQL查询来执行它:COLUMN_NAME::text
!
sqoop import \
--connect jdbc:postgresql://localhost:5432/foobar \
--username ryan -P --direct \
--query "SELECT id,ip::text,my_enum::text,description FROM stuff WHERE \$CONDITIONS" \
--target-dir stuff \
--split-by id
我还遇到了带有INET字段的ERROR orm.ClassWriter: Cannot resolve SQL type 1111
和一个ENUM。