PostgreSQL数据库基础知识
参考:
1. PostgreSQL简介
PostgreSQL是⼀个功能强⼤的开源对象关系数据库管理系统(ORDBMS)。⽤于安全地存储数据; ⽀持最佳做法,并允许在处理请求时检索它们。
特点:
PostgreSQL可在所有主要操作系统(即Linux,UNIX(AIX,BSD,HP-UX,SGI IRIX,Mac OS X,Solaris,Tru64)和Windows等)上运⾏。
PostgreSQL⽀持⽂本,图像,声⾳和视频,并包括⽤于C/C++,Java,Perl,Python,Ruby,Tcl和开放数据库连接(ODBC)的编程接⼝。
PostgreSQL⽀持SQL的许多功能,例如复杂SQL查询,SQL⼦选择,外键,触发器,视图,事务,多进程并发控制(MVCC),流式复制(9.0),热备(9.0))。
在PostgreSQL中,表可以设置为从“⽗”表继承其特征。
可以安装多个扩展以向PostgreSQL添加附加功能。
⼯具:
psql:
它是⼀个命令⾏⼯具,也是管理PostgreSQL的主要⼯具。pgAdmin是PostgreSQL的免费开源图形⽤户界⾯管理⼯具。
phpPgAdmin:
它是⽤PHP编写的PostgreSQL的基于Web的管理⼯具。它基于phpMyAdmin⼯具管理MySQL功能来开发。它可以⽤作PostgreSQL的前端⼯具。
pgFouine:
它是⼀个⽇志分析器,可以从PostgreSQL⽇志⽂件创建报告。专有⼯具有 -
Lightning Admin for PostgreSQL, Borland Kylix, DBOne, DBTools Manager PgManager, Rekall, Data Architect, SyBase Power Designer, Microsoft Access, eRWin, DeZign for Databases, PGExplorer, Cas
e Studio 2, pgEdit, RazorSQL, MicroOLAP Database Designer, Aqua Data Studio, Tuples, EMS Database Management Tools for PostgreSQL, Navicat, SQL Maestro Group products for PostgreSQL, Datanamic DataDiff for PostgreSQL, Datanamic SchemaDiff for PostgreSQL, DB MultiRun PostgreSQL Edition, SQLPro, SQL Image Viewer, SQL Data Sets 等等。
2. PostgreSQL数据类型
数据类型分为三种,如下
数值数据类型
字符串数据类型
⽇期/时间数据类型
布尔类型
货币类型
⼏何类型
2.1 数值数据类型
2.2 字符串数据类型
2.3 ⽇期/时间数据类型
2.4 布尔类型
2.5 货币类型
2.6 ⼏何类型
3. 数据导⼊和导出
⼯具:pg_dump和pg_restore
3.1 pg_dump⼯具使⽤
是⽤于备份PostgreSQL数据库的⼯具。它可以在数据库正在使⽤的时候进⾏完整⼀致的备份,并不阻塞其它⽤户对数据库的访问。作⽤是把⼀个数据库转储为纯⽂本⽂件或者是其它格式.
⽤法:
pg_dump [选项]... [数据库名字]
⼀般选项:
-f, --file=FILENAME 输出⽂件或⽬录名
-F, --format=c|d|t|p 输出⽂件格式 (定制, ⽬录, tar)
明⽂ (默认值))
-j, --jobs=NUM 执⾏多个并⾏任务进⾏备份转储⼯作
-v, --verbose 详细模式
-V, --version 输出版本信息,然后退出
-Z, --compress=0-9 被压缩格式的压缩级别
--lock-wait-timeout=TIMEOUT 在等待表锁超时后操作失败
--no-sync do not wait for changes to be written safely to disk
-?, --help 显⽰此帮助, 然后退出
控制输出内容选项:
-a, --data-only 只转储数据,不包括模式
-b, --blobs 在转储中包括⼤对象
-B, --no-blobs exclude large objects in dump
-c, --clean 在重新创建之前,先清除(删除)数据库对象
-C, --create 在转储中包括命令,以便创建数据库
-E, --encoding=ENCODING 转储以ENCODING形式编码的数据
-
n, --schema=SCHEMA 只转储指定名称的模式
-N, --exclude-schema=SCHEMA 不转储已命名的模式
-o, --oids 在转储中包括 OID
-O, --no-owner 在明⽂格式中, 忽略恢复对象所属者
-s, --schema-only 只转储模式, 不包括数据
-S, --superuser=NAME 在明⽂格式中使⽤指定的超级⽤户名
-t, --table=TABLE 只转储指定名称的表
-T, --exclude-table=TABLE 不转储指定名称的表
-x, --no-privileges 不要转储权限 (grant/revoke)
--binary-upgrade 只能由升级⼯具使⽤
--column-inserts 以带有列名的INSERT命令形式转储数据
-
-disable-dollar-quoting 取消美元 (符号) 引号, 使⽤ SQL 标准引号
--disable-triggers 在只恢复数据的过程中禁⽤触发器
--enable-row-security 启⽤⾏安全性(只转储⽤户能够访问的内容)
--exclude-table-data=TABLE 不转储指定名称的表中的数据
--if-exists 当删除对象时使⽤IF EXISTS
--inserts 以INSERT命令,⽽不是COPY命令的形式转储数据
--no-publications do not dump publications
--no-security-labels 不转储安全标签的分配
--no-subscriptions do not dump subscriptions
--no-synchronized-snapshots 在并⾏⼯作集中不使⽤同步快照
--no-tablespaces 不转储表空间分配信息
-
-no-unlogged-table-data 不转储没有⽇志的表数据
--quote-all-identifiers 所有标识符加引号,即使不是关键字
--section=SECTION 备份命名的节 (数据前, 数据, 及数据后)
--serializable-deferrable 等到备份可以⽆异常运⾏
--snapshot=SNAPSHOT 为转储使⽤给定的快照
--strict-names 要求每个表和/或schema包括模式以匹配⾄少⼀个实体 --use-set-session-authorization
使⽤ SESSION AUTHORIZATION 命令代替
ALTER OWNER 命令来设置所有权
联接选项:
-d, --dbname=DBNAME 对数据库 DBNAME备份
-h, --host=主机名数据库服务器的主机名或套接字⽬录
-p, --port=端⼝号数据库服务器的端⼝号
-U, --username=名字以指定的数据库⽤户联接
-w, --no-password 永远不提⽰输⼊⼝令
-W, --password 强制⼝令提⽰ (⾃动)
--role=ROLENAME 在转储前运⾏SET ROLE
如果没有提供数据库名字, 那么使⽤ PGDATABASE 环境变量
的数值.
使⽤案例:
仅迁移数据库结构
pg_dump -U TestRole1 -s -f TestDb1.sql TestDb1
3.2 pg_restore⽤法
pg_restore 从⼀个归档中恢复⼀个由 pg_dump 创建的 PostgreSQL 数据库.
⽤法:
pg_restore [选项]... [⽂件名]
⼀般选项:
-d, --dbname=名字连接数据库名字
-f, --file=⽂件名输出⽂件名
-F, --format=c|d|t 备份⽂件格式(应该⾃动进⾏)drop table if exists admin
-l, --list 打印归档⽂件的 TOC 概述
-v, --verbose 详细模式
-V, --version 输出版本信息, 然后退出
-?, --help 显⽰此帮助, 然后退出
恢复控制选项:
-a, --data-only 只恢复数据, 不包括模式
-c, --clean 在重新创建之前,先清除(删除)数据库对象
-C, --create 创建⽬标数据库
-e, --exit-on-error 发⽣错误退出, 默认为继续
-I, --index=NAME 恢复指定名称的索引
-j, --jobs=NUM 执⾏多个并⾏任务进⾏恢复⼯作
-L, --use-list=FILENAME 从这个⽂件中使⽤指定的内容表排序
输出
-n, --schema=NAME 在这个模式中只恢复对象
-N, --exclude-schema=NAME do not restore objects in this schema
-
O, --no-owner 不恢复对象所属者
-P, --function=NAME(args) 恢复指定名字的函数
-s, --schema-only 只恢复模式, 不包括数据
-S, --superuser=NAME 使⽤指定的超级⽤户来禁⽤触发器
-t, --table=NAME restore named relation (table, view, etc.)
-T, --trigger=NAME 恢复指定名字的触发器
-x, --no-privileges 跳过处理权限的恢复 (grant/revoke)
-1, --single-transaction 作为单个事务恢复
--disable-triggers 在只恢复数据的过程中禁⽤触发器
--enable-row-security 启⽤⾏安全性
--if-exists 当删除对象时使⽤IF EXISTS
-
-no-data-for-failed-tables 对那些⽆法创建的表不进⾏
数据恢复
--no-publications do not restore publications
--no-security-labels 不恢复安全标签信息
--no-subscriptions do not restore subscriptions
--no-tablespaces 不恢复表空间的分配信息
--section=SECTION 恢复命名节 (数据前、数据及数据后)
--strict-names 要求每个表和/或schema包括模式以匹配⾄少⼀个实体 --use-set-session-authorization
使⽤ SESSION AUTHORIZATION 命令代替
ALTER OWNER 命令来设置所有权
联接选项:
-h, --host=主机名数据库服务器的主机名或套接字⽬录
-p, --port=端⼝号数据库服务器的端⼝号
-U, --username=名字以指定的数据库⽤户联接
-w, --no-password 永远不提⽰输⼊⼝令
-W, --password 强制⼝令提⽰ (⾃动)
--role=ROLENAME 在恢复前执⾏SET ROLE操作
选项 -I, -n, -P, -t, -T, 以及 --section 可以组合使⽤和指定
多次⽤于选择多个对象.
如果没有提供输⼊⽂件名, 则使⽤标准输⼊.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论