跳转至

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.

参考

su 命令

回到页面顶部