gpt4 book ai didi

postgresql - 在 PostgreSQL 中使用 COPY FROM 命令插入多个表

转载 作者:行者123 更新时间:2023-12-04 17:44:26 25 4
gpt4 key购买 nike

我正在尝试在 PostgreSQL 中使用 COPY FROM 命令的性能来获取 CSV 文件(CSV -> table1)的 1 个表的所有数据,我需要插入其他数据,但是, 在一个新表中。我需要第一个表的主键作为外键放在第二个表中。例子:我需要在 table1 中插入 1,000,000 个名称,在 table2 中插入 500,000 个名称,但是,table2 中的所有名称都引用 table1 中的 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 中相应行的 ID 插入到 table2 中,您需要删除该字段的 NOT NULL 约束,COPY数据,然后分别更新该字段。

假设table1table2表可以通过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 - 在 PostgreSQL 中使用 COPY FROM 命令插入多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52766213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com