使用一个 INSERT 语句而不是每行 INSERT 创建 PostgreSQL 转储

Create PostgreSQL dump with ONE INSERT statement instead of INSERT per row

我尝试使用 pg_dump 进行 table 数据转储,如下所示:

pg96\bin\pg_dump ... --format plain --section data --column-inserts --file obj.account.backup --table obj.account database_xyz

而不是得到

INSERT INTO obj.account(name, email, password) VALUES ('user1','email1','password1');
INSERT INTO obj.account(name, email, password) VALUES ('user2','email2','password2');

我想得到

INSERT INTO obj.account (name, email, password) VALUES 
('user1','email1','password1'),
('user2','email2','password2');                                                  

有没有没有任何非 PostgreSQL 后处理的方法?

无法使用 pg_dump 获得 INSERT 语句。

从 PostgreSQL 12 开始,您可以将 pg_dump 与 --rows-per-insert=nrows 一起使用,参见 https://www.postgresql.org/docs/12/app-pgdump.html

我知道这是一个老问题,但我想提一下,以防其他人(比如我)在寻找解决方案时发现这个问题。在某些情况下无法使用 COPY,对于更大的数据集,使用单个 INSERT 语句在导入时要快得多。