Postgresql数据备份与恢复的几种方式

pg_dump备份

备份成可insert格式的sql文件:

#pg_dump -h localhost -U postgres -d dbName -f /path/dump.sql
  1. -h 指定要连接的主机
  2. -U 连接数据库的用户名
  3. -d 在导出的数据库名称
  4. -f 导出保存到的文件,也可以用 > 转储如
#pg_dump -h localhost -U postgres -d dbName > /path/dump.sql

但是这样备份是不能用pg_restore 导入的,如果支持pg_restore导入需加 -F参数

#pg_dump -h localhost -U postgres -d dbName -F c > /path/dump.dat
  1. -F, --format=c|d|t|p 输出文件格式 ,(c-定制, d-目录, t-tar, p-默认)

如果只想导出单张表:

#pg_dump -h localhost -U postgres -d dbName -t tableName > /path/table.sql
  1. -t, --table=tableName 只转储单张表的数据

如果只想导出单张表的表结构,不需要导出表数据:

#pg_dump -h localhost -U postgres -d dbName -t tableName --exclude-table-data=tableName > /path/table.sql
  1. –exclude-table-data不导出指定表的数据

psql 命令

psql也可以转储结询出果,或者把备份的数据导入。
把查询结果导出:

#psql -h localhost -U postgres -d dbName -c "select * from tableName where id>100" > result.txt
  1. -c ,–command=命令 执行单一命令(SQL或内部指令)然后结束

把pg_dump 导出的普通文档格式的数据导入:

#psql -h localhost -U postgres -d dbName -f result.txt

以上命令将执行文件里的命令。

psql指令 \copy

psql -c 导出的数据没办法直接在shell下执行导入,如果只想导入导出单张表里的部分数据, pg_dump -F c 的格式可以用pg_restore导入, 但是往往pg_dump 没加这个参数,这时候可以在psql shell里执行 \copy 指令来完成部分数据的备份导入,比较方便。

=> \copy (select * from tableName where id>100) to '/path/data.dat' with binary;

以上语句在psql shell里执行, 将根据sql语句导出数据, 如要把导出的数据导入到另一个表里只需如下执行:

=> \copy tableName from '/path/data.dat' with binary;

把可以以copy的方式把数据导出为csv,如下:

=> \copy tableName to '/path/copy.csv' csv header;

或者把csv格式的数据导入,如下:

=> \copy tableName from '/path/copy.csv' DELIMITER ',' csv header;

pg_restore

pg_dump 以-F c 的导出数据,可以用pg_restore 导入:

# pg_restore -h localhost -U postgres -d dbName -t tableName  /path/dump.dat
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值