Как сравнить 2 столбца разных таблиц? - PullRequest
0 голосов
/ 07 мая 2019

Мне нужно заполнить базу данных, используя CSV-файлы. Внешний ключ реализован как xid REFERENCES table1 NOT NULL. Теперь мне нужно заполнить xid во 2-й таблице cid из первой таблицы.

столы настроены так

table1:

xid SERIAL Primary KEY
country VARCHAR(256)

таблица2:

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

Я заполнил table1 с помощью файла CSV. Теперь моя проблема в том, что я не могу получить xid в table2. Я использую Python с import csv и import psycopg2

1 Ответ

0 голосов
/ 07 мая 2019

Я бы порекомендовал создать временную таблицу для загрузки данных:

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;

Затем подтвердитеВаша транзакция и временная таблица будут удалены.

Однако я настоятельно рекомендую не помещать столбец страны в таблицу2.Данные уже находятся в таблице 1, поэтому не дублируйте их.

...