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小时内删除。