使用 pg_dump,导出所有 table 的整个架构和一个 table 的数据

Using pg_dump, export entire schema for all tables and data for one table

我想使用 pg_dump 导出整个模式以及单个 table 中的数据。我知道我可以做这样的事情:

pg_dump -s mydatabase > db.sql; pg_dump -a -t some_table mydatabase >> db.sql

然而,它有些不雅,后半部分的输出重复了很多前半部分已经提供的设置和注释,例如:

-- Dumped from database version 9.6.8
-- Dumped by pg_dump version 9.6.8

SET statement_timeout = 0;
SET lock_timeout = 0;
...

有更好的方法吗?

两者的使用受到限制

t=# \! pg_dump -d t -h localhost -p 5400 -s -a -t so12
pg_dump: options -s/--schema-only and -a/--data-only cannot be used together

很明显-不。你必须按顺序做...

SET SESSION 语句仅设置会话 "parameters" - 它们不会重复数据等 - 为什么要避免它们?..

我无法想象执行的命令会更快,例如。与 select now() 相比:

t=# \timing on
Timing is on.
t=# SET statement_timeout = 0;
SET
Time: 0.312 ms
t=# select now();
             now
------------------------------
 2018-04-01 17:40:37.52727+01
(1 row)

Time: 17.182 ms