仅导出数据库结构 (-s参数)
pg_dump -U dbaadmin -s -f mydb20.sql mydb20
导出整个数据库
pg_dump -U dbaadmin mydb20 > dump.sql
或者
pg_dump -U dbaadmin -f mydb20.sql mydb20
导入整个数据库
psql -U dbaadmin mydb20 < dump.sql
或者
psql -U dbaadmin -f mydb20.sql mydb20
导出某个表
pg_dump -U dbaadmin mydb20 -t mytable > mytable.sql
压缩数据文件
pg_dump -U dbaadmin mydb20 | gzip > mytable.gz
恢复
gunzip -c mytable.gz | psql -U dbaadmin mydb20
常用参数
-d, --dbname=DBNAME 对数据库 DBNAME备份
-h, --host=主机名 数据库服务器的主机名或套接字目录
-p, --port=端口号 数据库服务器的端口号
-U, --username=名字 以指定的数据库用户联接
-w, --no-password 永远不提示输入口令
-W, --password 强制口令提示 (自动)
--role=ROLENAME 在转储前运行SET ROLE
-f, --file=FILENAME 导出后保存的文件名
-a, --data-only 只导出数据,不包括模式
-b, --blobs 在转储中包括大对象
-c, --clean 在重新创建之前,先清除(删除)数据库对象
-c, --clean 在转储中包括命令,以便创建数据库(包括建库语句,无需在导入之前先建数据库)
-E, --encoding=ENCODING 转储以ENCODING形式编码的数据
-n, --schema=SCHEMA 只转储指定名称的模式
-N, --exclude-schema=SCHEMA 不转储已命名的模式
-o, --oids 在转储中包括 OID
-O, --no-owner 在明文格式中, 忽略恢复对象所属者
-s, --schema-only dump only the schema, no data只转储模式, 不包括数据(不导出数据)
-S, --superuser=NAME superuser user name to use in plain-text format在转储中, 指定的超级用户名
-t, --table=TABLE dump the named table(s) only只转储指定名称的表
-T, --exclude-table=TABLE do NOT dump the named table(s)只转储指定名称的表
-x, --no-privileges do not dump privileges (grant/revoke)不要转储权限 (grant/revoke)
--binary-upgrade 只能由升级工具使用
--column-inserts 以带有列名的INSERT命令形式转储数据
--disable-dollar-quoting 取消美元 (符号) 引号, 使用 SQL 标准引号
--disable-triggers 在只恢复数据的过程中禁用触发器
--no-tablespaces 不转储表空间分配信息
--inserts 以INSERT命令,而不是COPY命令的形式转储数据