2

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

Sqoop 即使使用 --map-column-java 强制字符串解析也无法导出。

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

任何想法?

4

1 回答 1

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

我还遇到ERROR orm.ClassWriter: Cannot resolve SQL type 1111了一个 INET 字段和一个 ENUM。

于 2013-06-07T01:01:10.673 回答