在PostgreSQL中使用Copy From命令在多个表中插入 [英] Use COPY FROM command in PostgreSQL to insert in multiple tables
本文介绍了在PostgreSQL中使用Copy From命令在多个表中插入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
COPY FROM
命令的性能来获取CSV文件(CSV->Table1)的1个表的所有数据,我需要插入其他数据,但是,在一个新表中。我需要第一个表的主键放在第二个表中作为外键。
示例:
我需要在表1中插入1,000,000个名称,在表2中插入500,000个名称,但是,表2中的所有名称都引用了表1中的1个元组。
CREATE TABLE table1 (
table1Id bigserial NOT NULL,
Name varchar(100) NULL,
CONSTRAINT table1Id PRIMARY KEY (table1Id)
);
CREATE TABLE table2 (
table2Id bigserial NOT NULL,
Other_name varchar(100) NOT NULL
table1_table1Id int8 NOT NULL,
CONSTRAINT table2_pk PRIMARY KEY (table2Id)
);
推荐答案
命令COPY在复制数据时不允许表操作(例如查找其他表以获取要插入的正确外键)。若要插入table1
中相应行的table2
ID,您需要删除该字段的NOT NULL
约束,COPY
数据,然后分别插入UPDATE
这些字段。
假设table1
和table2
表可以通过table1.Name = table2.Other_name
连接,则代码为:
复制前:
ALTER TABLE table2 ALTER COLUMN table1_table1Id DROP NOT NULL;
复制后:
UPDATE table2 SET table2.table1_table1Id = table1.table1Id
FROM table1
WHERE table1.Name = table2.Other_name;
ALTER TABLE table2 ALTER COLUMN table1_table1Id SET NOT NULL;
这篇关于在PostgreSQL中使用Copy From命令在多个表中插入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文