我有一个带有约束的主postgres
表,主键(id
)和通常的东西。
然后我有一个临时表,它具有相同的列,但没有约束。我使用该临时表进行批量批量插入。
我想不时合并这些表by id
,意思是:我想将临时表中的数据插入主表中,确保:
如何在临时表中为大约100万个条目最好地实现这些?
答案 0 :(得分:0)
以下回答基于UPDATES
以残酷的方式制作:DELETE + INSERT
删除主表上的约束
ALTER TABLE [main_table] DROP CONSTRAINT ...
ALTER TABLE [main_table] DROP CONSTRAINT ...
从主表中删除临时行中存在的行
DELETE FROM [main_table] WHERE id IN (SELECT id FROM [temp_table]);
从临时表中插入所有内容
INSERT INTO [main_table] SELECT * FROM [temp_table];
重新创建约束
ALTER TABLE [main_table] ADD FOREIGN KEY ...
ALTER TABLE [main_table] ADD FOREIGN KEY ...
答案 1 :(得分:-1)
您应该使用merge
声明:
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, .....)