首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将postgres表合并为另一个表?

如何将postgres表合并为另一个表?
EN

Stack Overflow用户
提问于 2015-01-12 10:28:47
回答 2查看 657关注 0票数 1

我有一个主postgres表,其中包含约束、主键(id)和通常的内容。

然后我有一个临时表,它有相同的列,但没有约束。我将临时表用于批量批量插入。

我不时地想要合并这些表by id,意思是:我希望将临时表中的数据插入主表中,确保:

  • 主表中不存在的id应该只是插入
  • 存在的id应该是更新

如何在临时表中的大约一个million+条目中最好地实现这些?

EN

回答 2

Stack Overflow用户

发布于 2015-01-12 10:50:41

下面的答案是基于UPDATES以一种残酷的方式做出的:DELETE + INSERT

  1. 在主表上删除约束 ALTER TABLE [main_table] DROP CONSTRAINT ... ALTER TABLE [main_table] DROP CONSTRAINT ...
  2. 从主表中删除临时表中存在的行 DELETE FROM [main_table] WHERE id IN (SELECT id FROM [temp_table]);
  3. 将临时表中的所有内容插入主表中。 INSERT INTO [main_table] SELECT * FROM [temp_table];
  4. 重新创建约束 ALTER TABLE [main_table] ADD FOREIGN KEY ... ALTER TABLE [main_table] ADD FOREIGN KEY ...
票数 0
EN

Stack Overflow用户

发布于 2015-01-12 10:41:28

您应该使用merge状态:

代码语言:javascript
复制
MERGE INTO main_table main
USING temp_table temp
ON main.Id = temp.Id
WHEN MATCHED THEN
 UPDATE SET main.name=temp.name ....
WHEN NOT MATCHED THEN 
 INSERT VALUES (Id, .....)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27899855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档