使用一个 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 语句在导入时要快得多。
我尝试使用 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 语句在导入时要快得多。