sqoop+postgresql:如何防止在表名周围加引号

vatpfxk5  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(481)

我正在尝试将一个表从postgresql导入hdfs上的parquet文件。
我是这样做的:

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

我得到了

  1. INFO manager.SqlManager: Executing SQL statement: SELECT t.* FROM "foo.bar" AS t LIMIT 1
  2. ERROR manager.SqlManager: Error executing statement: org.postgresql.util.PSQLException: ERROR: relation "foo.bar" does not exist
  3. ``` `SELECT t.* FROM "foo.bar" AS t LIMIT 1` 确实不起作用,但是 `SELECT t.* FROM foo.bar AS t LIMIT 1` 做。所以问题是表名被引用了。我试着提供 `--table` 争论方式不同,但没有效果。
  4. 我该怎么处理?
  5. ## 编辑
  6. 当你链接的文档处于状态时,有一个 `--schema` 争论。由于某些原因,本节未提及 `sqoop help import` .
  7. 另一件奇怪的事是

--table bar --schema foo

  1. 仍然不起作用,但是

--table bar -- --schema foo

  1. 做。
  2. 不管怎样,它现在起作用了。感谢您链接相关文档部分!
xwmevbvl

xwmevbvl1#

表名为 bar , foo 架构的名称。根据文件,你应该这样做:

  1. sqoop import \
  2. (...)
  3. --table bar \
  4. --schema foo
  5. (...)
cuxqih21

cuxqih212#

根据文档,您需要单独指定模式:

  1. sqoop import \
  2. --connect "jdbc:postgresql://pg.foo.net:5432/bar" \
  3. --username user_me --password $PASSWORD \
  4. --table bar \
  5. --schema foo \
  6. --target-dir /user/me/bar \
  7. --as-parquetfile

相关问题