PostgreSQL7.0手冊-管理員手冊-31. 管理數據庫
2019-09-08 23:33:51
供稿:網友
第三十一章. 管理數據庫
內容
創建數據庫
訪問數據庫
管理數據庫
備份和恢復
如果 Postgrespostmaster 已經就緒并且運行起來了,那么我們就可以創建一些數據庫做一些試驗了.這里我們描述管理數據庫的基本命令.
創建數據庫
我們假設你要創建一個名為 mydb 的數據庫.你可以用下面命令做這件事情:
% createdb dbname
Postgres 允許你在一個節點上創建任意數量的數據庫,并且你自動成為該數據庫的管理員.數據庫名必須以字母開頭而且少于 31 個字符長(譯注:可以通過配置和重新編譯 postgres 改變這個值。).并不是任何用戶都有權利成為數據庫管理員.如果Postgres拒絕為你創建數據庫,那么節點管理員有必要賦予你創建數據庫的權限.如果出現這種現象,請與你的節點管理員聯系.
--------------------------------------------------------------------------------
訪問數據庫
一旦你已經建立了一個數據庫,你可以用下面方法訪問它:
運行 Postgres 的終端控制程序(SQL界面)(psql),它允許你交互地輸入,編輯和執行 SQL 命令.
寫一個利用 libpq 子過程庫的 C 程序.它允許你在 C 里面提交一個 SQL 命令,然后再收到返回和狀態信息.這個接口將在 PostgreSQL 程序員手冊 中進一步討論.
你可能希望運行起 psql,然后把本手冊的例子試驗一下.這個可以通過用下面命令激活數據庫 dbname 進行:
psql dbname
你將看到如下歡迎信息:
Welcome to psql, the PostgreSQL interactive terminal.
Type: /copyright for distribution terms
/h for help with SQL commands
/? for help on internal slash commands
/g or terminate with semicolon to execute query
/q to quit
dbname=>
這個提示符表示SQL界面正在偵聽你的輸入,因此你可以鍵入 SQL 查詢到由SQL界面維護的工作區中.psql 程序響應由反斜杠 "/" 開頭的轉意字符.例如,你可以鍵入下面命令獲得關于各種 PostgresSQL 命令的語法的幫助:
dbname=> /h
一旦你完成了向工作區中查詢的輸入,你可以鍵入下面命令把工作區的內容提交給 Postgres 服務器:
dbname=> /g
這個命令告訴服務器執行查詢.如果你以分號結束查詢(語句),上面的反斜杠-g就不必輸入了.psql 會自動處理分號結尾的查詢.如果要從一個文件里讀入查詢,而不是交互地輸入,鍵入:
dbname=> /i filename
從 psql 退回到 UNIX,鍵入
dbname=> /q
psql 將退出并且回到你的命令行 shell.(要知道更多的轉意字符信息,在SQL界面提示符上鍵入反斜杠-h.)在 SQL 查詢里面可以隨意使用空白(例如,空格,tabs 和 新行).單行注釋用 “--”(破折號).在破折號后面到行尾的所有內容都被忽略.多行注釋以及行內注釋,用 “/* ... */”-- 從 Ingres 借來的習慣。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
刪除數據庫
如果你是數據庫 mydb 的數據庫管理員,你可以用下面 UNIX 命令將其刪除:
% dropdb dbname
這個動作物理上刪除所有與該數據庫相關的 UNIX 文件,而且是不可逆的,所以在這么做之前你必須要考慮清楚.
還可以用下面語句在一次 SQL 會話里刪除一個數據庫。(譯注:但不能是正在聯接的數據庫。)
> drop database dbname
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
備份和恢復
注意
每個數據庫都應該經常備份。因為 Postgres 在文件系統里管理它自己的文件,我們不建議依靠你的文件系統的系統備份作為你的數據庫備份;那樣不能保證在恢復后文件處于可用的一致的狀態?!?
Postgres 提供兩個工具備份你的系統:pg_dump 備份獨立的數據庫以及 pg_dumpall 在一個步驟里備份你的數據庫節點?!?
可以用下面的命令備份一個獨立的數據庫:
% pg_dump dbname > dbname.pgdump
然后可以用下面命令恢復
cat dbname.pgdump | psql dbname
這個技巧可以用于把數據庫移動到一個新位置,然后重新命名現有數據庫。
大數據庫
作者:由 Hannu Krosing 寫于 1999-06-19。
因為 Postgres 允許表的尺寸大于你的系統的最大文件尺寸,可能把表輸出到一個文件會有問題,因為生成的文件很可能比你的系統允許的最大文件大?!?
因為 pg_dump 輸出到 stdout,你可以用標準的 *nix 工具繞開這個問題:
使用壓縮的 輸出:
% pg_dump dbname | gzip > filename.dump.gz
重載:
% createdb dbname
% gunzip -c filename.dump.gz | psql dbname
或
% cat filename.dump.gz | gunzip | psql dbname
使用分割(split):
% pg_dump dbname | split -b 1m - filename.dump.
重載:
% createdb dbname
% cat filename.dump.* | pgsql dbname
當然,文件名(filename)和 pg_dump 輸出的內容不必與數據庫名一樣。同樣,重載的數據庫可以有任意新的名稱,所以這個機制還適用于給數據庫改名。
--------------------------------------------------------------------------------