PostgreSQL數據庫基礎知識

參考:https://blog.csdn.net/antma/article/details/84454466php

           https://www.yiibai.com/postgresql前端

1. PostgreSQL簡介

PostgreSQL是一個功能強大的開源對象關係數據庫管理系統(ORDBMS)。 用於安全地存儲數據; 支持最佳作法,並容許在處理請求時檢索它們。sql

特色:數據庫

  • 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, Case 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 等等。session

 

2. PostgreSQL數據類型

數據類型分爲三種,以下併發

  • 數值數據類型
  • 字符串數據類型
  • 日期/時間數據類型
  • 布爾類型
  • 貨幣類型
  • 幾何類型

2.1 數值數據類型

2.2 字符串數據類型

2.3 日期/時間數據類型

 

2.4 布爾類型

2.5 貨幣類型

2.6 幾何類型

 

3. 數據導入和導出

工具:pg_dump和pg_restoreyii

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       備份文件格式(應該自動進行)
  -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 能夠組合使用和指定
屢次用於選擇多個對象.

若是沒有提供輸入文件名, 則使用標準輸入.
相關文章
相關標籤/搜索