Postgresql 导出与导入示例
2015-10-29 by dongnan
环境
操作系统: openSUSE 13.2
软件版本: postgresql-9.3.6
功能
PostgreSQL 提供了pg_dump(all)
工具用于转储数据。这种转储方法是创建一个文本文件里面都是SQL
命令,
当把这个文件回馈给服务器时, 将重建与转储时状态一样的数据库。
pg_dump
只能备份单个数据库,而且恢复的时候需要先创建空数据库。pg_dumpall
可以备份所有数据库,包括角色、表空间等。
举个栗子
注意,下面的示例需要拥有 postgresql
数据库超级用户权限.
导出
导出单个库
pg_dump dbname > testfile
导出所有库
/bin/su - postgres -c "/usr/bin/pg_dumpall -c > /tmp/dmp.sql"
导出所有库并压缩
/bin/su - postgres -c '/usr/bin/pg_dumpall -c | /usr/bin/gzip > /data/backup/20150902/dmp.gz'
参数
-c, --clean
Include SQL commands to clean (drop) databases before recreating them.
DROP commands for roles and tablespaces are added as well.
导入
导入单个库
pg_dump
生成的文本文件可以由psql
程序读取。从转储中恢复的常用命令是:
psql dbname < testfile
导入所有库
psql -f /tmp/dmp.sql
导入所有库(压缩)
gzip -dc /tmp/dmp.sql.gz | psql -f -
参数
-f filename, --file=filename
Use the file filename as the source of commands instead of reading commands interactively.
After the file is processed, psql terminates. This is in many ways equivalent to the meta-command \i.
If filename is - (hyphen), then standard input is read.