sql腳本與pg_restore命令怎么在postgreSQL中運(yùn)行-創(chuàng)新互聯(lián)

sql腳本與pg_restore命令怎么在postgreSQL中運(yùn)行?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

十多年的寧海網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整寧海建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“寧海網(wǎng)站設(shè)計(jì)”,“寧海網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

postgreSQL運(yùn)行sql腳本文件:


psql -d dbname -U username -f (腳本所在位置).sql

postgerSQL的pg_restore命令

用法:

pg_restore [選項(xiàng)]… [文件名]

一般選項(xiàng):

-d, --dbname=名字 連接數(shù)據(jù)庫名字
-f, --file=文件名 輸出文件名
-F, --format=c|d|t 備份文件格式(應(yīng)該自動(dòng)進(jìn)行)
-l, --list 打印歸檔文件的 TOC 概述
-v, --verbose 詳細(xì)模式
-V, --version 輸出版本信息, 然后退出
-?, --help 顯示此幫助, 然后退出

恢復(fù)控制選項(xiàng):

-a, --data-only 只恢復(fù)數(shù)據(jù), 不包括模式
-c, --clean 在重新創(chuàng)建之前,先清除(刪除)數(shù)據(jù)庫對(duì)象
-C, --create 創(chuàng)建目標(biāo)數(shù)據(jù)庫
-e, --exit-on-error 發(fā)生錯(cuò)誤退出, 默認(rèn)為繼續(xù)
-I, --index=NAME 恢復(fù)指定名稱的索引
-j, --jobs=NUM 執(zhí)行多個(gè)并行任務(wù)進(jìn)行恢復(fù)工作
-L, --use-list=FILENAME 從這個(gè)文件中使用指定的內(nèi)容表排序

輸出

-n, --schema=NAME 在這個(gè)模式中只恢復(fù)對(duì)象
-N, --exclude-schema=NAME 不恢復(fù)此模式中的對(duì)象
-O, --no-owner 不恢復(fù)對(duì)象所屬者
-P, --function=NAME(args) 恢復(fù)指定名字的函數(shù)
-s, --schema-only 只恢復(fù)模式, 不包括數(shù)據(jù)
-S, --superuser=NAME 使用指定的超級(jí)用戶來禁用觸發(fā)器
-t, --table=NAME 恢復(fù)命名關(guān)系(表、視圖等)
-T, --trigger=NAME 恢復(fù)指定名字的觸發(fā)器
-x, --no-privileges 跳過處理權(quán)限的恢復(fù) (grant/revoke)
-1, --single-transaction 作為單個(gè)事務(wù)恢復(fù)
–disable-triggers 在只恢復(fù)數(shù)據(jù)的過程中禁用觸發(fā)器
–enable-row-security 啟用行安全性
–if-exists 當(dāng)刪除對(duì)象時(shí)使用IF EXISTS
–no-comments 不恢復(fù)注釋
–no-data-for-failed-tables 對(duì)那些無法創(chuàng)建的表不進(jìn)行

數(shù)據(jù)恢復(fù)

–no-publications 不恢復(fù)發(fā)行
–no-security-labels 不恢復(fù)安全標(biāo)簽信息
–no-subscriptions 不恢復(fù)訂閱
–no-tablespaces 不恢復(fù)表空間的分配信息
–section=SECTION 恢復(fù)命名節(jié) (數(shù)據(jù)前、數(shù)據(jù)及數(shù)據(jù)后)
–strict-names 要求每個(gè)表和(或)schema包括模式以匹配至少一個(gè)實(shí)體
–use-set-session-authorization
使用 SESSION AUTHORIZATION 命令代替
ALTER OWNER 命令來設(shè)置所有權(quán)

聯(lián)接選項(xiàng):

-h, --host=主機(jī)名 數(shù)據(jù)庫服務(wù)器的主機(jī)名或套接字目錄
-p, --port=端口號(hào) 數(shù)據(jù)庫服務(wù)器的端口號(hào)
-U, --username=名字 以指定的數(shù)據(jù)庫用戶聯(lián)接
-w, --no-password 永遠(yuǎn)不提示輸入口令
-W, --password 強(qiáng)制口令提示 (自動(dòng))
–role=ROLENAME 在恢復(fù)前執(zhí)行SET ROLE操作

選項(xiàng) -I, -n, -N, -P, -t, -T, 以及 --section 可以組合使用和指定

多次用于選擇多個(gè)對(duì)象.

希望不要和我一樣犯這個(gè)低級(jí)錯(cuò)誤

順便記錄一下查看server和client的encoding以及修改

找到postgresql.conf文件,修改參數(shù)lc_messages的值為UTF8

重啟PostgreSQL的服務(wù)。

----查看服務(wù)端字符集:

test=> show server_encoding;

—查看客戶端字符集:

test=> show client_encoding;

補(bǔ)充:pg_restore及psql恢復(fù)數(shù)據(jù)的用法

一、使用psql恢復(fù)SQL文本格式的數(shù)據(jù)備份(即一個(gè)包含SQL腳本的文本文件)

恢復(fù)一個(gè)SQL備份文件并忽略過程中可能發(fā)生的所有錯(cuò)誤:

psql -U postgres -f myglobals.sql

恢復(fù)一個(gè)SQL備份文件,如遇任何錯(cuò)誤則立即停止恢復(fù):

psql -U postgres --set ON_ERROR_STOP=ON -f myglobals.sql

將SQL文本中的數(shù)據(jù)恢復(fù)到某個(gè)指定的database:

psql -U postgres -d mydb -f select_objects.sql

二、使用pg_restore進(jìn)行恢復(fù)

功能:

(1)支持并行恢復(fù),使用-j選項(xiàng)可以控制并行恢復(fù)的線程數(shù)。多個(gè)恢復(fù)線程可以并行處理,每個(gè)線程處理一張表。該模式可以顯著提高恢復(fù)速度。

(2)可以使用pg_restore掃描備份文件來生成一張備份內(nèi)容列表,通過該列表可以確認(rèn)備份紅包含了哪些內(nèi)容。還可以通過編輯該內(nèi)容列表來控制恢復(fù)哪些內(nèi)容。

(3)pg_dump支持選擇性地僅備份部分對(duì)象以節(jié)省備份時(shí)間,類似的,pg_restore也支持選擇性的僅恢復(fù)部分對(duì)象,不管備份文件本身是全庫備份還是部分對(duì)象的備份都沒有問題。

(4)pg_restore的大部分功能是向后兼容的,即支持將老版本PostgreSQL生產(chǎn)的備份數(shù)據(jù)恢復(fù)到新版本的PostgreSQL中。

在使用pg_restore執(zhí)行恢復(fù)動(dòng)作之前,請(qǐng)先創(chuàng)建目標(biāo)數(shù)據(jù)庫:

create database mydb;

然后執(zhí)行恢復(fù):

pg_restore --dbname=mydb --jobs=4 --verbose mydb.backup

如果備份和恢復(fù)時(shí)使用的database同名,則可以通過加--create選項(xiàng)省去單獨(dú)建庫的過程,如下:

pg_restore --dbname=postgres --create --jobs=4 --verbose mydb.backup

注:如果指定了--create選項(xiàng),那么恢復(fù)出來的數(shù)據(jù)庫名就會(huì)默認(rèn)采用備份時(shí)的數(shù)據(jù)庫名,不允許改名。如果還同時(shí)指定了--dbname選項(xiàng),那么此時(shí)連接的數(shù)據(jù)庫名一定不能是待恢復(fù)的數(shù)據(jù)庫名,因?yàn)橐謴?fù)數(shù)據(jù)庫之前必然要建數(shù)據(jù)庫,而

要建數(shù)據(jù)庫之前必然要先連到某個(gè)已存在的數(shù)據(jù)庫,--dbname選項(xiàng)指定的就是建立被恢復(fù)的數(shù)據(jù)庫之前先連到哪個(gè)數(shù)據(jù)庫,所以必然不能與待恢復(fù)的數(shù)據(jù)庫同名,我們一般指定先連到postgres數(shù)據(jù)庫。

9.2版或更新版本的pg_restore支持--section選項(xiàng),加上該選項(xiàng)后可以實(shí)現(xiàn)僅恢復(fù)表結(jié)構(gòu)而不恢復(fù)表數(shù)據(jù)。具體做法是先創(chuàng)建目標(biāo)恢復(fù)數(shù)據(jù)庫:

create database mydb2;

然后使用pg_restore:

pg_restore --dbname=mydb2 --section=pre-data --jobs=4 mydb.backup

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。

當(dāng)前名稱:sql腳本與pg_restore命令怎么在postgreSQL中運(yùn)行-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://muchs.cn/article14/dsjcde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、網(wǎng)站制作網(wǎng)站導(dǎo)航、響應(yīng)式網(wǎng)站移動(dòng)網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)