pg_dump :
用于提取 PostgreSQL数据库到一个脚本文件或其他的存档文件
导出数据:: 示例:
pg_dump -U postgres(用户名) (-t 表名) 数据库名(缺省时同用户名) > 路径/文件名.sql
pg_dump -U postgres -t f0021b0002lx02_path > C:\EFI\Boot\f0021b0002lx02_path.sql
pg_dump用于提取 PostgreSQL数据库到一个脚本文件或其他的存档文件
用法:
pg_dump [connection-option...]
[option...] [dbname]
描述:
pg_dump用于备份postgresql数据库,它可以在数据库运行时使用,pg_dump不会阻塞其他的用户访问数据库。
转储的内容可以脚本或存档的方式输出。脚本转储指包含SQL命令的纯文本文件,这些 SQL 命令可以用于重建该数据库并将之恢复到保存成脚本的时候的状态。要从这些脚本中恢复数,需要使用psql命令。脚本文件可以被用来重建数据库。
另一种归档文件格式必须和pg_restore一起使用重建数据库。它们允许pg_restore有选择地进行恢复,甚至在恢复前重新排列项目。归档文件格式被设计成跨平台移植。
当一种归档文件格式与pg_restore结合使用,那么pg_dump就能提供一种灵活的归档和传输机制。 pg_dump可以用于备份整个数据库,然后就可以使用pg_restore检查这个归档和/或选择要恢复的数据库部分。最灵活的输出文件格式是“自定义”格式(-Fc)。它允许选择和重新排序的所有归档的项目,在默认情况下被压缩。
在运行pg_dump的时候,你应该检查任何警告的输出(在标准错误上打印)。
Options
下面的命令行选项控制内容及格式输出。
- dbname
-
指定数据库的名称,如果没有指定,会引用环境变量 PGDATABASE, 如果环境变量没有设置,那么会指定使用用户名来连接。
-
-a
--data-only -
只转储数据,而不是架构(数据的定义)。表中的数据,大对象的序列值被转储。此选项与specifying --section=data类似。
-
-b
--blobs -
包含大对象,当指定参数为 --schema, --table, or --schema-only 是该动作默认执行,所以-b选项只在选择性转储数据时有用。
-
-c
--clean -
输出在创建数据库创建命令之前先清理(删除)该数据库对象的命令
此选项只对纯文本格式有意义的。对于归档格式,你可以在调用pg_restore时指定该选项 -
-C
--create -
以一条创建该数据库本身并且与这个数据库联接等命令开头进行输出。 (如果是这种形式的脚本,那么你在运行脚本之前和哪个数据库联接就 不重要了。) ,此选项只对纯文本格式有意义的。对于归档格式,你可以在调用pg_restore时指定该选项。
- -E encoding
- --encoding=encoding
-
指定字符集编码。 默认情况下使用数据库编码。 (另一个方法是设置 PGCLIENTENCODING环境来达到同样的结果
-
-f file
--file=file -
把输出发往指定的文件.如果忽略这些,则使用标准输出。
-
-F format
--format=format -
选择输出的格式。 如下:
-
p
plain -
输出一个纯文本 SQL 脚本文件( 默认)
-
c
custom -
输出一个自定义格式用于pg_store 。最灵活的输出格式,它允许恢复过程中手动选择和重新排序的档案条目。默认压缩。
-
d
directory -
输出一个目录格式的存档用于pg_restore输入。 这将创建带有一个存储每张表和BLOB数据的文件的目录,加上一个所谓的内容文件表用机器可以读取的格式 描述转储对象, 这种格式pg_restore可以读取。 默认压缩
-
t
tar -
输出适合输入到 pg_restore 里的tar归档文件. 使用这个归档允许在恢复数据库时重新排序和/或把表结构排除在外. 同时也可能可以在恢复的时候限制对哪些数据进行恢复
-
p
-
-i
--ignore-version -
一个工具选项,现在被忽略了.
-
-n schema
--schema=schema -
指定输出的框架名。指定的框架将被输出转储。
-
-N schema
--exclude-schema=schema -
排除输出的框架名。指定的框架将不被输出。
-
-o
--oids -
为每个表都输出对象标识(OID). 如果你的应用在某种程度上引用了OID字段的话,(比如,在外键约束中 用到). 那么使用这个选项. 否则,不应该使用这个选项
-
-O
--no-owner -
不把对象的所有权设置为对应源数据库。
这个选项只是对纯文本格式有意义.对于其它格式,在你调用 pg_restore 的时候你可以声明该选项. -
-R
--no-reconnect -
此选项已经过时的,但可以向后兼容.
-
-s
--schema-only -
只输出架构(数据定义),不输出数据。
-
-S username
--superuser=username -
在某些场合,pg_dump 创建的脚本或者归档需要有 超级用户访问的权限,比如在关闭触发器或者为大纲元素甚至所有属性时. 这个选项声明在这些场合时使用的用户名
-
-t table
--table=table -
只输出表 table的数据
-
-T table
--exclude-table=table -
不输出表table的数据
-
-v
--verbose -
声明冗余模式。 这样将令 pg_dump 在标准错误上打印 进度信息.
-
-V
--version -
输出pg_dump的版本信息然后退出.
-
-x
--no-privileges
--no-acl -
避免输出 ACL(赋予/撤消 命令)和表的所有者关系信息
-
-Z 0..9
--compress=0..9 -
声明在那些支持压缩的格式中使用的压缩级别.零意味着没有 压缩 (目前只有客户化格式支持压缩)
- --no-security-labels
-
不转储安全标签.
- --no-tablespaces
-
不输出选择表空间命令.
- --no-unlogged-table-data
-
不转储没有日志记录的表的内容
- --quote-all-identifiers
-
强制引用所有标识符 ,这可能用于转储迁移到未来的版本引入额外的关键字.
-
-?
--help -
显示帮助并退出.
以下选项控制数据库连接参数.
-
-h host
--host=host -
声明运行服务器 的机器的主机名.缺省是使用本地Unix主控套接字,而不是一个 IP 联接. 如果主机名以斜扛开头,则它被用做到 Unix 域套接字的路径
-
-p port
--port=port -
声明服务器 正在侦听并等待联接的TCP/IP 端口或本地 Unix 主控套接字文件句柄. 缺省的端口号是5432,或者环境变量 PGPORT 的值(如果存在)
-
-U username
--username=username -
以给出用户身分联接
-
-w
--no-password - 从来不需要密码提示
-
-W
--password -
强制口令提示.如果服务器需要口令认证,那么这个动作应该自动发生
- --role=rolename
-
指定一个角色的名字是用来创建转储
连接数据库, 默认的用户和数据库是postgres
psql -U user -d dbname
切换数据库,相当于mysql的use dbname
\c dbname
列举数据库,相当于mysql的show databases
\l
列举表,相当于mysql的show tables
\dt
查看表结构,相当于desc tblname,show columns from tbname
\d tblname
\di 查看索引
创建数据库:
create database [数据库名];
删除数据库:
drop database [数据库名];
*重命名一个表:
alter table [表名A] rename to [表名B];
*删除一个表:
drop table [表名];
*在已有的表里添加字段:
alter table [表名] add column [字段名] [类型];
*删除表中的字段:
alter table [表名] drop column [字段名];
*重命名一个字段:
alter table [表名] rename column [字段名A] to [字段名B];
*给一个字段设置缺省值:
alter table [表名] alter column [字段名] set default [新的默认值];
*去除缺省值:
alter table [表名] alter column [字段名] drop default;
在表中插入数据:
insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......);
修改表中的某行某列的数据:
update [表名] set [目标字段名]=[目标值] where [该行特征];
删除表中某行数据:
delete from [表名] where [该行特征];
delete from [表名];--删空整个表
创建表:
create table ([字段名1] [类型1] ;,[字段名2] [类型2],......<,primary key (字段名m,字段名n,...)>;);
\copyright 显示 PostgreSQL 的使用和发行条款
\encoding [字元编码名称]
显示或设定用户端字元编码
\h [名称] SQL 命令语法上的说明,用 * 显示全部命令
\prompt [文本] 名称
提示用户设定内部变数
\password [USERNAME]
securely change the password for a user
\q 退出 psql
可以使用pg_dump和pg_dumpall来完成。比如备份sales数据库:
pg_dump drupal>/opt/Postgresql/backup/1.bak