我试图用sqoop命令插入postgreSQL数据库。
sqoop export --connect jdbc:postgresql://10.11.12.13:1234/db --table table1 --username user1 --password pass1--export-dir /hivetables/table/ --fields-terminated-by '|' --lines-terminated-by '\n' -- --schema schema
如果没有主键约束,它工作正常。我想插入新记录并同时更新旧记录。
我试过了
--update-key primary_key
这只会更新两个DB中存在的主键(hive和postgreSQL。无插入)
--update-mode allowinsert
- 这只是插入
--update-key primary_key --update-mode allowinsert
- 这会给出错误ERROR tool.ExportTool:导出时出错:不支持混合更新/插入 目标数据库
任何人都可以帮我写sqoop命令,将数据插入并更新到postgreSQL吗?
答案 0 :(得分:0)
根据我的互联网搜索,无法直接对postgreSQL数据库执行插入和更新。相反,你可以在postgreSQL中创建一个storedProc / function,你可以在那里发送数据..
sqoop export --connect <url> --call <upsert proc> --export-dir /results/bar_data
Stored proc/function应执行更新和插入。
链接1 - https://issues.apache.org/jira/browse/SQOOP-1270
链接2 - PLPGSQL-UPSERT-EXAMPLE