Удалить строки таблицы, указанной в текстовом файле в Postgres - PullRequest
3 голосов
/ 05 октября 2011

У меня есть текстовый файл, содержащий номера строк, которые должны быть удалены в моей таблице, например:

3
32
40
55
[...]

Как получить оператор SQL, совместимый с PostgreSQL, который удаляет каждую из этих строк измоя таблица с использованием текстового файла?

1 Ответ

6 голосов
/ 05 октября 2011

Когда-то это может выглядеть так:

CREATE TEMP TABLE tmp_x (nr int);

COPY tmp_x FROM '/absolute/path/to/file';

DELETE FROM mytable d
 USING tmp_x
 WHERE d.mycol = tmp_x.nr;

DROP TABLE tmp_x;

Для многократного использования оберните его в plpgsql-функцию с именем пути к файлу / имени таблицы / имени столбца в качестве параметров.Если имя таблицы или столбца является динамическим, вы должны использовать EXECUTE для DELETE.

...