SDE數據庫的備份、遷移或恢復

使用sdeexport和sdeimport命令對SDE數據庫的備份、遷移或恢復

本方法分四個步驟,備份元表,備份數據表,還原元表,還原數據表。

做SDE庫的遷移或恢復之前,首先要了解SDE做爲空間數據庫引擎,它是怎麼組織空間數據的,即要知道元表存放的內容和數據表存放的內容。SDE用 戶是SDE數據庫邊默認的一個用戶,所有的元表存放在該用戶下面,元表的作用就是存放數據表之間的關係,約7張數據表才能組成一個要素類,它們之間的關係 要靠SDE的元表來維護。因此SDE庫的備份就分二個步驟,備份元表,備份數據表。

此方法講的是採用SDE自帶的命令sdeimport和sdeexport備份和導入數據表,即方法的優點是可以在不同的數據庫之間進行庫的遷移或用於某個要素類恢復(sdeimport和sdeexport命令詳見SDE自帶的幫助文檔)。
首先,備份元表

可以採用sdeexmport命令來備份元表,但本方法採用使用ArcCatalog自帶的export工具來備份元表。連接需要備份的SDE庫, 在需要備份的特徵數據集或某個連接上點擊右鍵,再點擊export/xml workspace Document 如下圖所示:

說明:在SDE數據庫連接(上圖中sdeto sy)上點擊右鍵和在特徵數據集(如上圖中的upmis.規劃歷史庫)上點擊右鍵備份的元表是不一樣的。在數據庫連接上點擊右鍵(當然此時連接數據庫的用 戶需要具有操作所有數據的權限,比如SDE用戶),備份的是所有的元表信息,而在特徵數據集上點擊右鍵,備份的是該特徵數據集對應的元表。
選擇只備份元表(schema only),選擇備份元數據(SDE中的數據的來源等信息)的話會把元數據的也備份。如下圖所示:

其次,備份數據表
備份數據表採用的命令是sdeexport。在cmd裏邊執行該命令即可。假如現在我要備份的是upmissde用戶下面的jmd要素類,命令如下:
sdeexport -t jmd -f d:/jmd -u upmissde –p pwd -V sde.default
-t:表名(要素類名),-f(存儲路徑),-u(用戶名),-p(密碼) ,-V(版本名稱)。
當然,如果不是在SDE主機上備份還需要加上-i (端口) ,-s(主機名)這二個參數。
把所有需要備份的要素類都進行備份。
再次,在目標數據庫上還原元表
也可以採用sdeimport命令來完成,本方法中同樣採用ArcCatalog的import工具來還原元表。
以某個用戶名(比如說sde)建立SDE數據庫的連接,雙擊連接後在數據庫連接上點擊右擊,選擇import/ xml workspace Document。
需要注意的是,以什麼用戶登陸,還原的元表記錄的就是哪個用戶的數據表關係。比如,備份時我是使用upmissde備份的dlg特徵數據集,還原元表時我 是以sde用戶登錄的,那麼,還原後會在sde用戶下面出現一個sde.dlg(本來是upmissde.dlg),這就是此方法的特異之處,可以在不同 的用戶和不用的SDE版本及不同的數據庫(Oracle ,SqlServer)之間進行數據遷移。
最後,還原數據表
同樣採用的是使用sdeimport命令進行還原,假如現在我要還原剛纔備份出來的jmd到sde用戶下面,命令如下:
sdeimport -o append –t jmd -f d:/jmd -u upmissde –pwd –V sde.default
當然,如果不是在SDE主機上備份還需要加上-i (端口) ,-s(主機名)這二個參數。把所有需要備份的要素類都進行備份。
-o的參數選用append的原因是:用ArcCatalog恢復元表的時候,同時會把元表中相關的數據表也創立了,所以-o後面的參數不能再選create了。
如果要素類多備份和恢復麻煩的話,可以寫一個批處理程序,哈哈。

本方法的缺點是不能處理多版本的數據,試驗如下:
C:/>sdeexport -t pl -f d:/nsyncbin/pl -u vertest -p vertest -V version

ArcSDE 9.1 Oracle9i Build 1269 Thu Mar 3 18:54:58 PST 2005
SDEX File Export Administration Utility
—————————————————–
Exporting ArcSDE object to “d:/nsyncbin/pl” in SDEX 9.0 export format …
Exporting table “pl”.
Spatial column “SHAPE”
2 features converted.
2 features exported.

C:/>sdeimport -o append -t pl -V SDE.DEFAULT -f D:/nsyncbin/pl -u vertest -p ver
test

ArcSDE 9.1 Oracle9i Build 1269 Thu Mar 3 18:54:58 PST 2005
SDEX File Import Administration Utility
—————————————————–
Importing SDEX from D:/nsyncbin/pl …
Importing spatial column “SHAPE”
ROWID colume “OBJECTID” exists in export file’s attribute. Drop
2 records read.
2 records stored.

C:/>sdeimport -o append -t pl -V version -f D:/nsyncbin/pl -u vertest -p vertest

ArcSDE 9.1 Oracle9i Build 1269 Thu Mar 3 18:54:58 PST 2005
SDEX File Import Administration Utility
—————————————————–
Importing SDEX from D:/nsyncbin/pl …
Importing spatial column “SHAPE”
ROWID colume “OBJECTID” exists in export file’s attribute. Drop
2 records read.
2 records stored.

C:/>

在導入之前,VERTEST用戶下面,SDE.DEFAULT版本里,PL圖層中有一個要素,OID爲1,以VERTEST的身份,新建一個版本 version,並在version版本中新建一個要素,OID爲2。此時Default版本中只有一個OID=1的要素,而在version版本中有 OID=1,2二個要素。
然後使用sdeexport命令導出(如上所示)

接着,使用sdeimport把數據導入到VERTEST用戶的default版本中,此時查看default版本中的數據時,有OID=1,3,4三個要素。
接着,再把數據導入到VERTEST用戶的version版本中,此時version版本中的具有OID=1,2,5,6四個要素。
把version版本里邊的數據提交到default版本後,default具有OID=1,2,3,4,5,6六個要素,並且在做衝突檢查的過程中不會報有衝突。這就是說明在使用該命令備份和恢復多版本的SDE數據庫時,也存在侷限性。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章