PostgreSQL 备份与还原
PostgreSQL About 1,849 words备份 - pg_dump
参数
-U
:指定用户;--encoding
:指定编码;-d
、--dbname
:指定备份数据库;-f
、--file
:导出到指定文件;-Z
、--compress
:指定备份时压缩等级,0
-9
(9
最大限度压缩,也最耗CPU
等资源);-F
、--format
:导出格式(p
|c
|d
|t
)p
:plain
-输出普通文字SQL
脚本(默认);c
:custom
-输出自定义归档格式,适用于pg_restore
导入,该格式是最灵活导出方式,允许在导入时自定义选择和重排序归档条目。该格式默认启用压缩;d
:directory
-输出文件夹归档格式,适用于pg_restore
导入。该格式会创建一个文件夹,一个表对应一个文件。该格式默认启用压缩,并且支持并行导出;t
:tar
-输出tar
压缩归档格式,适用于pg_restore
导入。该格式将文件夹归档格式产生的文件夹压缩成tar
压缩包。但该格式不支持压缩(文件夹归档已经压缩了),并且在导入时也不能更改相关的表顺序。
-O
、--no-owner
:在明文格式中,忽略恢复对象所属者;-s
、--schema-only
:只转储模式, 不包括数据;-a
、--data-only
:只转储数据,不包括模式;-C
、--create
:包含创建数据库语句;-c
、--clean
:包含drop
删除语句,建议与--if-exists
同时使用;--if-exists
:drop
删除语句时带上IF EXISTS
指令;
更多参数可使用pg_dump --help
查看。
示例
只备份schema
、包含drop
/create
语句、指定数据库z-blog
、压缩等级0
级(不压缩),到backup.sql
文件。
pg_dump -U postgres --encoding utf8 -s -C -c --if-exists -d z-blog -Z 0 -f pg_backup_schema.sql
只备份数据、忽略所属者、指定数据库z-blog
、压缩等级9
级(最高级别压缩),到backup.sql
文件。(-c
/--clean
和-a
/--data-only
不能同时使用)
pg_dump -U postgres --encoding utf8 -O -a -d z-blog -Z 9 -f pg_backup_data.dump
备份所有数据包括模式、序列、数据等、指定导出格式为自定义格式、压缩等级为9
、导出到pg_backup.dump
文件。
pg_dump -U postgres --encoding utf8 -F c -C -c --if-exists -d z-blog -Z 9 -f pg_backup.dump
还原 - psql
如果使用pg_dump
未指定format
,则导出的是SQL
脚本,导入时需用psql
命令而不是pg_restore
。
psql
导入时需指定连接的数据库,z-blog
数据库未创建,需提前创建。
连接数据库
psql -U postgres
创建数据库
先删除旧数据库
DROP DATABASE IF EXISTS "z-blog";
再创建新数据库
CREATE DATABASE "z-blog";
退出连接
exit
还原数据
Windows
在Git Bash
中执行,因为CMD
和PowerShell
默认字符集不是UTF-8
。(当然也不是在PostgreSQL
的命令行中执行,上一步创建完新数据库后退出连接到普通命令行中)
psql -U postgres -d postgres -f backup_schema.sql
还原 - pg_restore
大部分参数与pg_dump
含义相近,可使用pg_restore --help
查看。
例子
-d
指定连接哪个数据库,注意:可以不用是目标数据库名,可使用默认postgres
数据库,而且必须指定,否则一直无响应(可以kill
掉)。
-d
/--dbname
和-f
/--file
不能同时使用。
pg_restore -U postgres -F c -d postgres pg_backup.dump
参考
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓