如何比较不同表的2列?

时间:2019-05-07 11:34:05

标签: python database postgresql csv psycopg2

我需要使用csv文件填充数据库。外键实现为xid REFERENCES table1 NOT NULL。现在,我需要使用第一张表中的xid填充第二张表中的cid

表格是这样设置的

表1:

xid SERIAL Primary KEY
country VARCHAR(256)

表2:

yid SERIAL Primary KEY 
building VARCHAR(256)
country VARCHAR(256)
xid REFERENCES country NOT NULL

我使用csv文件填充了table1。现在我的问题是我无法将xid放入table2中。 我正在将Python与import csvimport psycopg2

一起使用

1 个答案:

答案 0 :(得分:0)

我建议创建一个临时表来加载数据:

CREATE TEMPORARY TABLE temp_building (building VARCHAR(256), country VARCHAR(256)) ON COMMIT DROP;

将数据加载到此临时表中,然后加载table2:

INSERT INTO table2 (building, country, xid)
SELECT building, country, xid
FROM table2
JOIN temp_building on temp_building.country = table2.country;

然后,提交您的事务,临时表将被删除。

但是,我强烈建议您不要将country列放入table2中。数据已经在表1中,因此请不要重复。