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

jtw3ybtb  于 2021-05-29  发布在  Hadoop
关注(0)|答案(4)|浏览(443)

在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作业soe不接受schema参数?我错过了什么?
谢谢

lh80um4z

lh80um4z1#

使用以下内容作为jdbc url

jdbc:postgresql://somehost/somedb/someschema

并移除 --schema someschema 来自sqoop语句。

prdp8dxp

prdp8dxp2#

您可以在jdbc连接中更详细地指定/更改传递“?currentschema=myschema”的默认模式。

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

cgh8pdjw3#

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

—table schemaName.tableName
smdncfj3

smdncfj34#

我在这里找到了一个办法。

sqoop job --exec myjob -- -- --schema someschema

相关问题