当我在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作业不采用架构参数?我错过了什么?
由于
答案 0 :(得分:1)
您可以在jdbc连接More detail中指定/更改默认架构传递"?currentSchema = myschema "。
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
答案 1 :(得分:0)
您不需要单独提及架构,您可以将其保存在jdbc URL中,不确定postgres jdbc URL是否具有该选项。您必须在表选项本身中添加它。像下面的东西
—table schemaName.tableName
答案 2 :(得分:0)
使用以下作为JDBC URL
jdbc:postgresql://somehost/somedb/someschema
并从Sqoop声明中删除--schema someschema
。
答案 3 :(得分:0)
我找到了一种方法来完成这项工作here。
sqoop job --exec myjob -- -- --schema someschema