删除Postgres中文本文件中指定的表的行

pti*_*obj 3 sql postgresql file-io postgresql-copy

我有一个文本文件,其中包含应该在我的表中删除的行的行号,如下所示:

3
32
40
55
[...]
Run Code Online (Sandbox Code Playgroud)

如何获得PostgreSQL兼容的SQL语句,使用文本文件从表中删除这些行?

Erw*_*ter 6

做一次可能看起来像这样:

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;
Run Code Online (Sandbox Code Playgroud)

要重复使用,请将其包装到plpgsql函数中,并将file-path/table name/column name作为参数.如果表或列名是动态的,你必须使用EXECUTEDELETE.