Sqoop - 在保存的作业中使用架构

问题描述 投票:0回答:4

当我在 shell 上运行此命令时工作正常:

sqoop import --incremental append --check-column id_civilstatus --last-value -1 
--connect jdbc:postgresql://somehost/somedb --username someuser 
--password-file file:///passfile.txt --table sometable --direct -m 3 
--target-dir /jobs/somedir -- --schema someschema

但是当我尝试将其保存为工作时:

sqoop job --create myjob -- import --incremental append --check-column id_civilstatus 
--last-value -1 --connect jdbc:postgresql://somehost/somedb --username someuser 
--password-file file:///passfile.txt --table sometable --direct -m 3 
--target-dir /jobs/somedir -- --schema someschema

然后我执行:

sqoop job --exec myjob

我收到此错误消息:

PSQLException: ERROR: relation "sometable" does not exist

这是由于默认架构中不存在“sometable”而导致的错误。

为什么 sqoop 作业不带 schema 参数?我错过了什么吗?

谢谢

postgresql hadoop hdfs database-schema sqoop
4个回答
1
投票

您可以在jdbc连接中指定/更改默认模式传递“?currentSchema=myschema更多详细信息.

jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema

0
投票

不需要单独提及 schema,您可以将其保留在 jdbc URL 中,不确定 postgres jdbc URL 是否有该选项。您必须将其添加到表选项本身中。像下面这样

—table schemaName.tableName

0
投票

使用以下内容作为您的 JDBC URL

jdbc:postgresql://somehost/somedb/someschema 

并从 Sqoop 语句中删除

--schema someschema


0
投票

我找到了一种方法来完成这项工作这里

sqoop job --exec myjob -- -- --schema someschema
© www.soinside.com 2019 - 2024. All rights reserved.