如何使用sqoop命令同时插入和更新到PostgreSQL

时间:2015-06-17 09:29:26

标签: postgresql hadoop hive sqoop

我试图用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吗?

1 个答案:

答案 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