语法

pg_dump [connection-option...] [option...] [dbname]

pg_dump 连接选项参数如下:

-h host 或 --host=host:指定运行服务器的主机名。
-p port 或 --port=port:监听端口号,默认端口为5432。
-U username 或 --username=username:指定要连接的用户名。
-w 或 --no-password:从不提示密码,该选项常用于后台脚本中。
-W 或 --password:强制 pg_dump 在连接到一个数据库之前提示密码,某些情况下可避免额外的连接尝试。
–role=rolename:该选项会导致 pg_dump 在连接到数据库时发布一个 set role rolename 命令。相当于切换到另一个角色。当已验证的用户缺少 pg_dump需要的权限时,可以使用这个功能切换到一个相应权限的角色。
dbname:指定连接的数据库名。
-a 或 --data-only:只对纯文本格式有意义,只输出数据,不输出数据定义的sql。
-b 或 --blobs:在输出中是否包含大对象。除非指定了选择性输出的选项 --schema、–table、–schema-only 开关,否则默认会输出大对象。
-c 或 --clean:只对纯文本格式有意义。指定输出的脚本中是否生成清理该数据库对象语句(如drop table 命令)。
-C 或 --create:只对纯文本格式有意义。指定脚本中是否输出一条 create database 语句和连接到该数据库的语句。一般在备份的源数据库和目标数据库的名称一致时,才指定此参数。
-E encoding 或 --encoding=encoding:以指定的字符集编码创建输出,默认为数据库字符集。
-f file 或 --file=file:输出到指定的文件中。
-F format 或 --format=format:选择输出的格式,可以是p、c、t。
p 是 plain 的意思,为纯文本 sql 脚本文件格式,为默认格式。
c 是 custom 的意思,以一个适合 pg_restore 使用的自定义格式输出并归档。这是最灵活的输出格式,在该格式中允许手动查询并且可以在 pg_restore 恢复时重排归档项的顺序。该格式默认是压缩的。
t 是 tar 的意思,以一个适合输入 pg_restore 的 tar 格式输出并归档。该格式允许手动选择并且在恢复时重排序归档项的顺序,但这个重排序是有限制的,比如,表数据项的相关顺序在恢复时不能更改。同时,tar 格式不支持压缩,并且对独立表的大小限制为 8GB。
-n schema 或 --schema=schema:只输出匹配 schema 的模式内容,如果没有指定这个选项,目标数据库中所有非系统模式都会被输出。可以使用多个 -n 指定多个模式,也可以使用通配符匹配多个模式,使用通配符时最好用引号进行界定,防止 shell 将通配符进行扩展。
-N schema 或 --exclude-schema=schema:排除模式输出。优先级低于 -n。
-o 或 --oids:指定是否为每个表都输出对象标识(OID)。
-O 或 --no–owner:只对纯文本格式有意义,表示不把对象的所有权设置为对应源端数据库中的owner,为了让脚本可以被任何用户使用。
-s 或 --schema-only:只输出对象定义(模式),不输出数据。这个选项在备份表结构或在另一个数据库上创建相同结构的表时比较有用。
-S username 或 --superuser=username:指定关闭触发器时需要用到的超级用户名。它只在使用了 --disable-triggers 时才有作用。一般情况下最好不要输入这个参数,而是用超级用户启动生成的脚本。
-t table 或 --table=table:只输出匹配表、视图、序列,可以使用多个 -t 匹配多个表,也可以匹配通配符,使用通配符时最好用引号进行界定,防止shell将通配符进行扩展。优先级高于 -n。
-T table 或 --exclude-table=table:排除表输出。优先级低于 -t。
-v 或 --verbose:执行过程中打印更详细的信息。使用此选项后,pg_dump 将输出详细的对象评注及输出文件的启停时间和进度信息(输出到标准错误上)。
-V 或 --version:输出 pg_dump 版本并退出。
-x 或 --no–privileges 或 --no-acl:禁止输出访问权限(grant/revoke命令)。
-Z 0.9 或 --compress=0.9:指定要使用的压缩级别,0表示不压缩。对于自定义归档格式,改参数指定压缩的单个表数据段,并且默认用中等水平压缩。对于纯文本输出,设置一个非零的压缩级别会导致全部输出文件被压缩,默认不压缩。tar 归档格式目前不支持压缩。
–binary-upgrade:专为升级工具准备的。
–inserts:insert命令输出数据,默认使用 copy 命令输出数据,这个选项主要用于将数据加载到非 PostgreSql 数据库。该选项为每一行生成一个 insert 命令,因此恢复时非常缓慢,但当数据库恢复时遇到一行错误时,它将仅丢失一行数据而不是全部的表内容。若目标端字段与源端字段顺序不一致,恢复可能完全失败,此时可使用 --column-inserts 选项。
–column-inserts 或 -attribute-inserts:显式指定字段名输出数据(insert into table(column1,……)values(……))。
–disable-dollar-quoting:关闭美元符号界定函数体。强制函数体内容用 SQL 标准的字符串语法的引号包围。
–disable-triggers:仅对纯文本格式有意义,只和创建仅有数据的输出相关。在恢复数据时,临时关闭目标表上的触发器。目前,发出 --disable-triggers命令的必须是超级用户,执行输出脚本时,应用 -S 执行一个超级用户的名称。
–lock-wait-timeout=timeout:等待表锁,超时失败。
–no-tablespaces:仅对纯文本格式有意义,不输出命令来选择表空间。
–use-set-session-authorization:使用 set session authorization 命令来代替 alter owner 命令设置所有权。

操作

--备份数据库用户角色表空间
pg_dumpall -f backup.sql --globals-only

--备份数据库结构
pg_dump -d cdrapp -C -s > cdrapp.sql
tar -czvf comm.tar.gz comm.sql
tar -xzvf comm.tar.gz

--备份 syd 数据库
pg_dump syd > syd.sql
pg_dump -Fc syd > syd.dump

--恢复 syd 数据库
\i syd.sql
psql -Upostgres -d test -f syd.sql
pg_restore -d syd syd.dump

--备份schema
pg_dump -d chis -n icuis > chis_icuis.sql

--恢复schema
\i chis_icuis.sql

--备份表
pg_dump -d syd -t syd.test > test.sql
copy syd.test to '/home/postgres/test.csv' with csv;

--还原表
\i test.sql
copy syd.test from '/home/postgres/test.csv' with csv;

--导出表定义
pg_dump -d chis -O -s -t "finance.out_trade_order" > finance.out_trade_order.sql

--断开数据库所有连接
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE datname='syd' AND pid<>pg_backend_pid();