我正在尝试将一个表从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
确实
无论如何,它现在有效。感谢您关联相关文档部分!
答案 0 :(得分:3)
表名为bar
,foo
是架构的名称。
根据{{3}}你应该这样做:
sqoop import \
(...)
--table bar \
--schema foo
(...)
答案 1 :(得分:2)
根据documentation,您需要单独指定架构:
sqoop import \
--connect "jdbc:postgresql://pg.foo.net:5432/bar" \
--username user_me --password $PASSWORD \
--table bar \
--schema foo \
--target-dir /user/me/bar \
--as-parquetfile