首頁 > 軟體

一篇文章教會你使用gs_restore匯入資料

2022-09-06 18:07:34

背景資訊

gs_restore是openGauss提供的針對gs_dump匯出資料的匯入工具。通過此工具可將由gs_dump生成的匯出檔案進行匯入。

gs_restore工具由作業系統使用者omm執行。

主要功能包含:

  • 匯入到資料庫

如果連線引數中指定了資料庫,則資料將被匯入到指定的資料庫中。其中,並行匯入必須指定連線的密碼。匯入時生成列會自動更新,並像普通列一樣儲存。

  • 匯入到指令碼檔案

如果未指定匯入資料庫,則建立包含重建資料庫所必須的SQL語句指令碼並寫入到檔案或者標準輸出。等效於直接使用gs_dump匯出為純文字格式。

命令格式

gs_restore [OPTION]... FILE

說明:

  • FILE沒有短選項或長選項。用來指定歸檔檔案所處的位置。
  • 作為前提條件,需輸入dbname或-l選項。不允許使用者同時輸入dbname和-l選項。
  • gs_restore預設是以追加的方式進行資料匯入。為避免多次匯入造成資料異常,在進行匯入時,建議使用“-c” 引數,在重新建立資料庫物件前,清理(刪除)已存在於將要還原的資料庫中的資料庫物件。
  • 紀錄檔列印無開關,若需隱藏紀錄檔,請將紀錄檔重定向到紀錄檔檔案。若恢復表資料時,資料量很大,會分批恢復,因此會多次出現“表資料已完成匯入”的紀錄檔。

表 1 常用引數說明

引數

引數說明

舉例

-U

連線資料庫的使用者名稱。

-U jack

-W

指定使用者連線的密碼。

  • 如果主機的認證策略是trust,則不會對資料庫管理員進行密碼驗證,即無需輸入-W選項;
  • 如果沒有-W選項,並且不是資料庫管理員,會提示使用者輸入密碼。

-W abcd@123

-d

連線資料庫dbname,並直接將資料匯入到該資料庫中。

-d backupdb

-p

指定伺服器所偵聽的TCP埠或本地Unix域通訊端字尾,以確保連線。

-p 8000

-e

當傳送SQL語句到資料庫時如果出現錯誤,則退出。預設狀態下會忽略錯誤任務並繼續執行匯入,且在匯入後會顯示一系列錯誤資訊。

-

-c

在重新建立資料庫物件前,清理(刪除)已存在於將要匯入的資料庫中的資料庫物件。

-

-s

只匯入模式定義,不匯入資料。當前的序列值也不會被匯入。

-

範例

特例:執行gsql程式,使用如下選項匯入由gs_dump/gs_dumpall生成匯出資料夾(純文字格式)的MPPDB_backup.sql檔案到postgres資料庫。

gsql -d postgres -p 15400 -W Bigdata@123 -f /home/omm/test/MPPDB_backup.sql
SET
SET
SET
SET
SET
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
CREATE INDEX
CREATE INDEX
CREATE INDEX
SET
CREATE INDEX
REVOKE
REVOKE
GRANT
GRANT
total time: 30476  ms

gs_restore用來匯入由gs_dump生成的匯出檔案。

範例1:執行gs_restore,將匯出的MPPDB_backup.dmp檔案(自定義歸檔格式)匯入到postgres資料庫。

gs_restore -W Bigdata@123 backup/MPPDB_backup.dmp -p 15400 -d postgres
gs_restore: restore operation successful
gs_restore: total time: 13053  ms

範例2:執行gs_restore,將匯出的MPPDB_backup.tar檔案(tar格式)匯入到postgres資料庫。

gs_restore backup/MPPDB_backup.tar -p 15400 -d postgres 
gs_restore[2017-07-21 19:16:26]: restore operation successful
gs_restore[2017-07-21 19:16:26]: total time: 21203  ms

範例3:執行gs_restore,將匯出的MPPDB_backup檔案(目錄格式)匯入到postgres資料庫。

gs_restore backup/MPPDB_backup -p 15400 -d postgres
gs_restore[2017-07-21 19:16:26]: restore operation successful
gs_restore[2017-07-21 19:16:26]: total time: 21003  ms

範例4:執行gs_restore,使用自定義歸檔格式的MPPDB_backup.dmp檔案來進行如下匯入操作。 匯入PUBLIC模式下所有物件的定義和資料。在匯入時會先刪除已經存在的物件,如果原物件存在跨模式的依賴則需手工強制干預。

gs_restore backup/MPPDB_backup.dmp -p 15400 -d postgres -e -c -n PUBLIC
gs_restore: [archiver (db)] Error while PROCESSING TOC:
gs_restore: [archiver (db)] Error from TOC entry 313; 1259 337399 TABLE table1 gaussdba
gs_restore: [archiver (db)] could not execute query: ERROR:  cannot drop table table1 because other objects depend on it
DETAIL:  view t1.v1 depends on table table1
HINT:  Use DROP ... CASCADE to drop the dependent objects too.
    Command was: DROP TABLE public.table1;

手工刪除依賴,匯入完成後再重新建立。

gs_restore backup/MPPDB_backup.dmp -p 15400 -d postgres -e -c -n PUBLIC
gs_restore[2017-07-21 19:16:26]: restore operation successful
gs_restore[2017-07-21 19:16:26]: total time: 2203  ms

範例5:執行gs_restore,使用自定義歸檔格式的MPPDB_backup.dmp檔案來進行如下匯入操作。只匯入PUBLIC模式下表table1的定義。

gs_restore backup/MPPDB_backup.dmp -p 15400 -d postgres -e -c -s -n PUBLIC -t table1
gs_restore[2017-07-21 19:16:26]: restore operation successful
gs_restore[2017-07-21 19:16:26]: total time: 21000  ms

範例6:執行gs_restore,使用自定義歸檔格式的MPPDB_backup.dmp檔案來進行如下匯入操作。只匯入PUBLIC模式下表table1的資料。

gs_restore backup/MPPDB_backup.dmp -p 15400 -d postgres -e -a -n PUBLIC -t table1
gs_restore[2017-07-21 19:16:26]: restore operation successful
gs_restore[2017-07-21 19:16:26]: total time: 20203  ms

總結

到此這篇關於使用gs_restore匯入資料的文章就介紹到這了,更多相關gs_restore匯入資料內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com