Обновить строки таблицы на основе значений в текстовом файле - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть таблица Postgres publications, в которой есть boolean столбец active, и моей задачей было установить все значения active на FALSE, поэтому я выполнил следующую команду copy, чтобырезервная копия строк, которые имеют active значение TRUE:

\copy (SELECT publication_id FROM publications WHERE active = TRUE)
to '~/active_publications.csv'
with csv

В конце я получил CSV-файл, в котором есть все publication_id из active строк.Затем я выполнил следующую команду, чтобы установить для всех значений active значение FALSE:

UPDATE publications SET active = FALSE;

Теперь мне нужно вернуться в обратном порядке: Как я могу использовать этот файл для установки active значения обратно TRUE для всех строк, которые имеют publication_id в этом CSV-файле?

1 Ответ

0 голосов
/ 14 февраля 2019

Простой способ - загрузить файл с COPY во временную таблицу, а затем использовать UPDATE ... FROM или INSERT ... ON CONFLICT для обновления таблицы.

В качестве альтернативы, вы можете использовать file_fdw для определения файла как сторонней таблицы и UPDATE с его использованием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...