pg_dump
pg_dump— 将一个
Postgres 数据库抽出到一个脚本文件
避免输出 ACL(赋予/撤消 命令)和表的所有者关系信息.
使用口令认证,提示输入
username 和
password.
语法
pg_dump [ dbname ] pg_dump [ -h host ] [ -p port ] [ -t table ] [ -a ] [ -c ] [ -d ] [ -D ] [ -i ] [ -n ] [ -N ] [ -o ] [ -s ] [ -u ] [ -v ] [ -x ] [ dbname ]
输入
-
pg_dump 接受下面的命令行参数:
-
声明将要抽取的数据库名.
dbname 缺省为
USER 环境变量的值.
-a
- 只输出数据,不输出结构(表定义). -c
- 创建前删除表定义。 -d
- 将数据输出为合适的插入字串. -D
- 将数据作为带字段名的插入语句输出. -i
- 忽略在 pg_dump 和数据库服务器之间的版本差别.因为 pg_dump知道许多关于系统表的信息,任何给定版本的 pg_dump只能和对应的数据库服务器版本一并使用.如果你需要跨越版本检查时才使用这个选项(而且如果 pg_dump 失效,别说我没警告你). -n
- 除非绝对必需,禁止标识周围的双引号.如果有保留字用于标识符,这么做有可能在装载输出的数据时导致麻烦.这是v6.4以前的 pg_dump 缺省特性。 -N
- 在标识周围包括双引号。这是缺省。 -o
- 为每个表都输出对象标识( OID). -s
- 只输出表结构(定义),不输出数据. -t table
- 只输出表 table 的数据. -u
- 使用口令认证.提示输入用户名和口令. -v
- 声明冗余模式 -x
dbname
-
pg_dump 同样接受下面的命令行参数作为联接参数:
-h
host
- 声明 postmaster 在运行的机器的主机名.缺省是使用本地Unix主控套接字,而不是一个IP 联接. -p port
- 声明 postmaster 正在侦听并等待联接的TCP/IP端口或本地 Unix 主控套接字文件句柄.缺省的端口号是5432,或者环境变量 PGPORT的值(如果存在). -u
输出
-
pg_dump 将创建一个文件或输出到
stdout。
-
pg_dump 无法与指定主机和端口上的
postmaster进程相联.如果看到这条信息,确认
postmaster正在给定的主机上你所声明的端口上运行.如果你的节点使用了认证系统,确认你已经获取了认证所须的信息.
Connection to database 'dbname' failed. FATAL 1: SetUserId:user 'username' is not in 'pg_shadow'
- 你在 pg_shadow 和 里没有有效的记录,因而不允许访问 Postgres.请与你的 Postgres管理员联系. dumpSequence(table): SELECT failed
Connection to database 'template1' failed. connectDB() failed: Is thepostmaster running and accepting connections at 'UNIX Socket' on port 'port'?
你没有读数据库的权限.请与你的 Postgres节点管理员联系.
注意:pg_dump 在内部使用 SELECT语句.如果你运行 pg_dump 时碰到问题,确认你能够使用象 psql这样的程序从数据库选择.
描述
pg_dump 是一个将 Postgres数据库输出到一个包含查询命令的脚本文件的工具.脚本文件是文本格式并且可以用于重建数据库,甚至可以在其他机器或其他硬件体系上. pg_dump将输出用于重建所有用户定义的类型,函数,表,索引聚集和操作符所必须的查询语句.另外,所有数据是用文本格式拷贝出来的,因而也可以很容易地拷贝回去,也很容易用工具编辑.pg_dump 在从 Postgres节点向另一个节点一个转移数据时很有用.在运行pg_dump后,我们应该检查输出脚本中的任何警告,尤其是下面列出的限制.
用法
输出与用户名同名的数据库:% pg_dump > db.out要重载该数据库:
% psql -e database < db.out