当我在 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 参数?我错过了什么吗?
谢谢
您可以在jdbc连接中指定/更改默认模式传递“?currentSchema=myschema”更多详细信息.
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
不需要单独提及 schema,您可以将其保留在 jdbc URL 中,不确定 postgres jdbc URL 是否有该选项。您必须将其添加到表选项本身中。像下面这样
—table schemaName.tableName
使用以下内容作为您的 JDBC URL
jdbc:postgresql://somehost/somedb/someschema
并从 Sqoop 语句中删除
--schema someschema
。
我找到了一种方法来完成这项工作这里。
sqoop job --exec myjob -- -- --schema someschema