pg_dump 是一个核心实用程序,用于将单个 PostgreSQL 数据库备份为 SQL 脚本、TAR 归档文件或自定义归档文件。
pg_dump 始终存在于 PostgreSQL 中。
变更历史
进行中
- PostgreSQL 18
- 添加了选项
--no-policies(提交 cd3c4512) - 添加了选项
--sequence-data(提交 9c49f0e8) - 添加了选项
--with-data/--with-schema/--with-statistics(提交 bde2fb79) 已回滚 (提交 6a46089e) - 添加了选项
--statistics(提交 6a46089e) - 添加了以下选项 (提交 1fd1bd87)
--schema-only--no-schema--data-only--no-data--statistics-only--no-statistics
- 在转储统计信息时提高效率 (提交 7d5c83b4 和 9c02e3a9)
- 添加了选项
- PostgreSQL 17
- PostgreSQL 16
- PostgreSQL 15
- PostgreSQL 14
- PostgreSQL 13
- PostgreSQL 11
- PostgreSQL 10
- PostgreSQL 9.5
- 移除了冗余的
-i/--ignore-version选项 (提交 232cd63b)
- 移除了冗余的
- PostgreSQL 9.4
- PostgreSQL 9.3
- PostgreSQL 9.2
- 添加了选项
--section(提交 a4cd6abc)
- 添加了选项
- PostgreSQL 9.1
- PostgreSQL 8.2
- PostgreSQL 8.0
- 在使用
-v/--verbose选项时显示开始/停止时间 (提交 91366138)
- 在使用
- PostgreSQL 7.3
- 主键将追溯性地添加到具有
ALTER TABLE ... ADD PRIMARY KEY的表中,以避免在后续还原期间创建索引的开销 (提交 5b5cef9a) - 各种输出可移植性改进 (提交 c828ec88)
- 支持大于 2GB 的对象 (提交 38e444aa)
- 主键将追溯性地添加到具有
- PostgreSQL 7.2
- 使用
pg_get_indexdef()函数生成CREATE INDEX命令,并避免发出默认的 opclasses (1929a90b) - 添加了 NLS 支持 (提交 b5593821)
- 使用
- PostgreSQL 7.1
- PostgreSQL 7.0
- PostgreSQL 6.5
- PostgreSQL 6.4
- PostgreSQL 6.3
- 选项
-H重命名为-h(提交 c35d7fb8)
- 选项
示例
单个表的纯文本转储的示例输出(包括定义和内容)
$ pg_dump -Fp -d 'host=localhost dbname=app user=appuser' --table=app.language -- -- PostgreSQL database dump -- -- Dumped from database version 12.5 -- Dumped by pg_dump version 14devel SET statement_timeout = 0; SET lock_timeout = 0; SET idle_in_transaction_session_timeout = 0; SET client_encoding = 'UTF8'; SET standard_conforming_strings = on; SELECT pg_catalog.set_config('search_path', '', false); SET check_function_bodies = false; SET xmloption = content; SET client_min_messages = warning; SET row_security = off; SET default_tablespace = ''; SET default_table_access_method = heap; -- -- Name: language; Type: TABLE; Schema: app; Owner: appuser -- CREATE TABLE app.language ( lang_id character(2) NOT NULL, name_english character varying(64), name_native character varying(64), CONSTRAINT language_lang_id_check CHECK ((lang_id ~ '^[a-z]{2}$'::text)) ); ALTER TABLE app.language OWNER TO app; -- -- Data for Name: language; Type: TABLE DATA; Schema: app; Owner: appuser -- COPY app.language (lang_id, name_english, name_native) FROM stdin; en English English de German Deutsch ja Japanese 日本語 th Thai ไทย \. -- -- Name: language language_pkey; Type: CONSTRAINT; Schema: app; Owner: appuser -- ALTER TABLE ONLY app.language ADD CONSTRAINT language_pkey PRIMARY KEY (lang_id); -- -- PostgreSQL database dump complete --
参考资料
- PostgreSQL 文档: pg_dump
有用链接
- 处理 PostgreSQL 转储清单 - 2022 年 9 月 Robert Bernier / Percona 的博客文章
