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

50few1ms  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(568)

我正在尝试用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中的数据吗?

ma8fv8wu

ma8fv8wu1#

根据我在互联网上的搜索,不可能直接对postgresqldb执行插入和更新。相反,您可以在postgresql中创建storedproc/函数,并将数据发送到那里。。

sqoop export --connect <url> --call <upsert proc> --export-dir /results/bar_data

存储过程/函数应同时执行更新和插入。
链接1-https://issues.apache.org/jira/browse/sqoop-1270
链接2-plpgsql upsert示例

相关问题