使用 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
我想使用 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