PostgreSQl - есть ли способ сделать Upsert из одной таблицы в другую? - PullRequest
0 голосов
/ 24 мая 2018

Я хочу сделать вставку или обновление из одной таблицы в другую в PostgreSQl.

То, чего я достиг до сих пор, - это создание двух команд SQL, одной для вставки и одной для обновления.Так есть ли способ сделать это только одной командой?

CREATE TEMP TABLE IF NOT EXISTS tmp_table_a (LIKE table_a INCLUDING DEFAULTS);
COPY tmp_table_a FROM STDIN DELIMITER ',' CSV;
UPDATE table_a a SET (id, column1, column2) = (tmp.id, tmp.column1, tmp.column2) FROM tmp_table_a tmp WHERE a.id = tmp.id;
INSERT INTO table_a (id, column1, column2) SELECT tmp.id, tmp.column1, tmp.column2 FROM tmp_table_a tmp WHERE tmp.id not in (select distinct id from table_a);
...