我想使用pg_dump导出整个架构以及单个表中的数据。我知道我可以这样做:
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;
...
有更好的方法吗?
答案 0 :(得分:1)
使用两者是受限制的
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
语句只设置会话"参数" - 他们不会重复数据等 - 为什么你要避免它们?...
我无法想象执行任何更快的命令,例如。与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