使用Sqoop导出到Postgresql ltree

时间:2012-10-03 12:09:00

标签: hadoop sqoop

要将我的数据从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

有什么想法吗?

1 个答案:

答案 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。