Sqoop + Postgresql:如何防止在表名周围加引号

巴托斯·马克辛科夫斯基

我正在尝试将表格从Postgresql导入到HDFS上的Parquet文件中。

这是我的工作:

sqoop import \
    --connect "jdbc:postgresql://pg.foo.net:5432/bar" \
    --username user_me --password $PASSWORD \
    --table foo.bar \
    --target-dir /user/me/bar \
    --as-parquetfile

我得到

INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM "foo.bar" AS t LIMIT 1
ERROR manager.SqlManager: Error executing statement: org.postgresql.util.PSQLException: ERROR: relation "foo.bar" does not exist

SELECT t.* FROM "foo.bar" AS t LIMIT 1确实不能工作,但是SELECT t.* FROM foo.bar AS t LIMIT 1可以。因此,问题在于表名被引用了。我试图以--table不同的方式提供论据,但没有效果。

我该如何解决?

编辑

在链接状态的文档中,有一个--schema参数。由于某种原因,并未在中提及sqoop help import

另一个奇怪的是

--table bar --schema foo

仍然不起作用,但是

--table bar -- --schema foo

做。

无论如何,现在就可以使用。感谢您链接相关的文档部分!

雅各布·卡尼亚(Jakub Kania)

表名是barfoo是架构的名称。根据文档,您应该这样做:

sqoop import \
    (...)
    --table bar \
    --schema foo
    (...)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章