zoukankan      html  css  js  c++  java
  • pgsql导入和导出数据

    备份 PostgreSQL 数据有三种完全不同的方法:

    1.SQL 转储(类似oracle 的exp,imp, )

    2.文件系统级别备份(也就是oracle冷备份。Down掉数据库。然后拷贝data目录下的文件。)

    3.在线备份(类似oracle的归档模式下的备份)。

    SQL 转储的方法采用的主意是创建一个文本文件,这个文本里面都是 SQL 命令,当把这个文件回馈给服务器时,将重建与转储时状态一

    样的数据库。 PostgreSQL 为这个用途提供了应用工具 pg_dump。这条命令的基本用法是:

    pg_dump dbname > outfile

    pg_dump 是一个普通的 PostgreSQL 客户端应用(尽管是个相当聪明的东西。)这就意味着你可以从任何可以访问该数据库的远端主机上

    面进行备份工作。 但是请记住 pg_dump 不会以任何特殊权限运行。具体说来, 就是它必须要有你想备份的表的读权限,因此,实际上你几乎

    总是要成为数据库超级用户。

    由 pg_dump 创建的备份在内部是一致的, 也就是说,在pg_dump运行的时候对数据库的更新将不会被转储。 pg_dump 工作的时候并不阻

    塞其他的对数据库的操作。 (但是会阻塞那些需要排它锁的操作,比如 VACUUM FULL。)

    Important: 如果你的数据库结构依赖于 OID (比如说用做外键),那么你必须告诉 pg_dump 把 OID 也倒出来。 要倒 OID,可以使用

    -o 命令行选项。 缺省时也不会转储”大对象”。如果你使用大对象,请参考 pg_dump 的命令手册页。

    Pg_dump支持备份与恢复形式:

    1.Pg_dump 全库导出。

    C:\Documents and Settings\Administrator>pg_dump -U postgres  postgres  > c:\fu

    lldb.sql

    Password:

    C:\Documents and Settings\Administrator>pg_dump -U postgres  postgres  > c:\full

    db.sql

    Password:

    2.Pg_dump 单表或者多表导出

    C:\Documents and Settings\Administrator>pg_dump  -U postgres  -t test2 -t test1

    postgres > c:\test1.sql

    3.pg_dump 特殊数据导出:

    利用select into语句创建一个临时表,然后使用pg_dump导出临时表。

    C:\Documents and Settings\Administrator>pg_dump  -U postgres  -t test_temp postgres > c:\temp.sql

    4.Pg_restore 恢复。

    To dump a database into a custom-format archive file:

    一定要dump成custom格式才能用pg_restore恢复。

    C:\Documents and Settings\Administrator>pg_dump -Fc -U postgres -t test -t test1

    -t test2 postgres  > c:\test012-1.sql

    Password:

    C:\Documents and Settings\Administrator>pg_restore -d postgres -U postgres -t te

    st1  c:\test012-1.sql

    Password:

    5.pg_dumpall导出(我把下面翻译一下把,下面说明的很详细了)

    pg_dump dumps only a single database at a time, and it does not dump information 
    about roles or tablespaces (because those are cluster-wide rather than per-database). 
    To support convenient dumping of the entire contents of a database cluster,
    the pg_dumpall program is provided. pg_dumpall backs up each database in a given cluster,
    and also preserves cluster-wide data such as role and tablespace definitions. 
    The basic usage of this command is:

    pg_dump 一次只能导出一个数据库。而且不能导出关于角色和表空间信息。(因为表空间和角色跨越单个数据库,属于cluster数据 库的。)pg_dumpall  能够帮你导出cluster数据库的完整内容。也可以单独导出单一数据库,角色和表空间的内容。(由于cluster不 好翻译。可以理解为多数据库。集群,簇数据库,不知道哪个更贴切,就不翻译了)

    pg_dumpall > outfile

    The resulting dump can be restored with psql: 导出结果能用psql恢复。

    psql -f infile postgres

    6.Psql  单表或者多表恢复

    C:\Documents and Settings\Administrator>psql -d postgres -U postgres -t test1 -f <c:\ff2.sql

    所有table,function,view,trigger,type…全部一起出来pg_dump -d dbname -s > sql.txt

    pg_dump -d dbname -t tablename -s > sql.txt

    pg_dump 名称

    pg_dump — 将一个 Postgres 数据库抽出到一个脚本文件

    pg_dump [ dbname ]pg_dump [ -h host ] [ -p port ] [ -t table ] [ -a ] [ -c ] [ -d ] [ -D ] [ -n ] [ -N ] [ -o ] [ -s ] [ -u ] [ -v ] [ -x ] [ dbname ]

    输入

    pg_dump 接受下面的命令行参数:

    dbname

    声明将要抽取的数据库名.dbname 缺省为 USER 环境变量的值.

    -a

    只输出数据,不输出结构(表定义).

    -c

    创建前删除表定义。

    -d

    将数据输出为合适的插入字串.

    -D

    将数据作为带字段名的插入语句输出.

    -n

    除非绝对必需,禁止标识周围的双引号.如果有保留字用于标识符,这么做有可能在装载输出的数据时导致麻烦.这是 v6.4以前的 pg_dump 缺省特性。

    -N

    在标识周围包括双引号。这是缺省。

    -o

    为每个表都输出对象标识(OID).

    -s

    只输出表结构(定义),不输出数据.

    -t table

    只输出表 table 的数据.

    -u

    使用口令认证.提示输入用户名和口令.

    -v

    声明冗余模式

    -x

    包含 ACL(赋予/撤消 命令)和表的所有关系.

    pg_dump 同样接受下面的命令行参数作为联接参数:

    -h host

    声明 postmaster 在运行的机器的主机名.缺省是使用本地Unix主控套接字,而不是一个 IPC 联接.

    -p port

    声明 postmaster 正在侦听并等待联接的TCP/IP 端口或本地 Unix 主控套接字文件句柄.缺省的端口号是5432,或者环境变量 PGPORT 的值(如果存在).

    -u

    使用口令认证,提示输入 username 和 password.

    pg_dump 在从 Postgres 节点向另一个节点一个转移数据时很有用.在运行pg_dump 后,我们应该检查输出脚本中的任何警告,尤其是下面列出的限制.

    注意:

    pg_dump 有一些限制.限制主要源于从系统表中抽取某些变化信息的困难性.

    pg_dump 不能理解部分索引.原因与上面所述相同;部分索引谓词都作为规划存储.( predicates are stored as plans.)

    pg_dump 不能处理大对象.大对象被忽略因而必须手工操作.

    要重载该数据库:

    % psql -e database < db.out

  • 相关阅读:
    Java 高级文件处理
    drf10
    drf9
    drf8
    drf7
    drf6
    drf5
    drf4
    drf3
    drf2
  • 原文地址:https://www.cnblogs.com/uniqid/p/4154598.html
Copyright © 2011-2022 走看看