pg_restore
逻辑备份恢复
PG提供了pg_restore的命令可以为通过pg_dump转储的数据进行逻辑恢复。对于SQL脚本可通过psql进行恢复
语法
pg_restore [connection_option] [option] [filename]
connection_option与pg_dump类似,不同之处是pg_restore恢复具体数据库时需要使用-d dbname来指定。
options
参数 | 含义 |
filename | 需要恢复的备份文件 |
-a/--no-data | 只恢复数据,不恢复数据定义 |
-c/--clean | 恢复数据前先清空对应数据 |
-C/--create | 在恢复数据前先创建 |
-d/--dbname | 指定恢复到具体数据库中 |
-e/--exit-on-error | 表示恢复数据库遇到报错则退出,默认报错仍继续并最终显示一个错误计数 |
-F/--format | 指定恢复的备份文件格式,一般而言pg_restore会自行判断,若需要指定可以指定t、d、c |
-I/--index | 只恢复命名的索引 |
-j | 开启多个并发进行恢复 |
-n namespaces 或 --schema | 只恢复指定名字的模式或者表数据,可配合-t使用 |
-O/--no-owner | 默认恢复对象是不指定owner |
--no-tablespaces | 恢复数据均恢复至默认表空间 |
-P | 只恢复指定函数 |
-s/--schema-only | 只恢复指定表结构 |
-t/--table | 只恢复指定表 |
-T/--trigger | 只恢复指定触发器 |
-f | 指定恢复文件 |
示例
psql -U xxx -p xxx -h xxx -d db_name -f db_name.sql
恢复format=c下的数据
pg_restore -U xxx -p xxx -h xxx db_name -Fc -f db_name.dump -- -C指定创建对应的dbname,若不使用-C则会恢复带-d指定数据库下 pg_restore -U xxx -p xxx -h xxx -d db_name -C db_name.dump
将dump文件恢复至new_dbname中
--需提前创建好new_dbname pg_restore -U xxx -p xxx -h xxx -d new_dbname db_name.dump
恢复指定表
pg_restore -U xxx -p xx -h xxx -d db_name -n public -t t1 -C du_name.dump
恢复-d格式下备份文件至已存在部分对象的数据库中
-- -c表示先做清理后恢复 pg_restore -U xxx -p xxx -h xxx -d db_name -c ./