題記
這篇文章主要是利用ArcGIS桌面、ArcSDE命令提供的多種ArcGIS數據導入導出數據(可以理解為數據遷移)的方式和數據庫遷移的方式(以Oracle數據庫為例),來介紹一下ArcGIS不同遷移方式、數據庫不同遷移方式的優缺點,而且這些遷移方式也是根據不同的數據量、不同的運行環境、不同的業務需求來設計的。
注意
首先再次強調,遷移之前做好數據備份工作。
ArcGIS遷移方式
Copy/Paste
操作方式 |
復制粘貼功能是ArcGIS最推薦用戶使用的數據遷移方式,也就是說直接對ArcSDE數據庫的數據集進行復制,然后在新建的File Geodatabase(強烈建議經常使用Personal Geodatabase的用戶使用文件地理數據庫)進行粘貼。 該遷移方式將所有Geodatabase支持的簡單模型(點、線、面要素類)和復雜模型(拓撲、幾何網絡、關系類等)全部進行了遷移。 |
適用環境 |
因為中間數據存儲方式以File Geodatabase,那么可以支持跨操作系統、跨數據庫類型、跨數據庫版本、跨ArcGIS版本(只要桌面可以讀取)等 如果數據量在50GB內,甚至是100GB內都可以使用該遷移方式 |
優點 |
使用該遷移方式最大的優點是安全,一般如果沒有其他意外發生(網絡中斷),數據的相互組織關系都是沒有問題的,而且操作非常簡單,上面也提到了跨環境、跨庫等。 |
缺點 |
如果數據量比較大時,可能會稍顯等待時間較長。對ArcGIS桌面所在機器的配置稍高(配置高,效率也會好一些) |
其他說明 |
常常有用戶會有這樣的一個需求,就是可能他們對圖層的ObjectID的值進行使用,那么在數據遷移過程中往往有可能改變該值,但是使用該遷移方式后,圖層的ObjectID的值不會重排,所以對ObjectID有要求的用戶可以放心大膽的使用該遷移方式。 |
Import/Export(Feature Class)
操作方式 |
其實該方式已經不能用數據遷移來使用了,這種方式主要是對本地數據的數據導入,導出,外部小數據量的GDB或者shapefile文件的操作。 與上面復制粘貼的方式不同,該方式其實主要立足與簡單的對象(點、線、面要素類)進行導入導出,而復雜的對象基本不能進行處理。 |
適用環境 |
因為中間數據存儲方式以File Geodatabase或Shapefile,那么可以支持跨操作系統、跨數據庫類型、跨數據庫版本、跨ArcGIS版本(只要桌面可以讀取)等。 如果數據量10GB內(shapefile存儲不能超過2GB)都可以使用該遷移方式。 |
優點 |
使用該遷移方式最大的優點是安全,因為本身數據量不大,顯得效率也是不錯的。 |
缺點 |
該遷移方式只支持簡單模型。 |
其他說明 |
對比上一個方式,使用該方式的導入圖層的ObjectID的值會重排。 |
Import/Export(XML)
個人感覺這個功能並不建議用戶使用它來遷移數據,雖然說它也可以進行數據遷移,但是最主要的應該是一個數據庫Schema的遷移。
假如一個公司做相關的數據庫適合不同的縣市,那么就可以使用該功能將數據庫的Schema進行簽入簽出,因為它本身也是將數據庫的庫結構用XML進行存儲。而且該功能也支持full model(復雜模型)。
也曾經有用戶使用該方法將10來GB的數據導入導出,屢試不爽,但是如果出現問題,10幾個GB的XML文件,誰能將錯誤找不來吧,所以不建議用戶使用該方法進行數據遷移。
同步復制
同步復制應該說不應該作為數據遷移的方法,但是因為同步復制的功能有一項創建復本,該功能可以變相理解為一個數據遷移。
優點:支持復雜數據模型、可以跨環境、跨版本、跨數據庫等
缺點:操作稍顯復雜。
操作方法:http://wenku.baidu.com/album/view/ec856dce0508763231121237
Sdeexport/sdeimport
Sdeexport是ArcSDE的數據導出導入命令,使用該命令個人感覺比桌面的import功能效率稍高。
使用方式:http://wenku.baidu.com/view/ed03afc58bd63186bcebbcc2.html
優點:效率高,可以不使用ArcGIS桌面或者相關的客戶端,對遷移環境要求不高
缺點:sdeimport功能支持將數據文件導入到數據庫中,以要素類的形式,不能直接導入指定的數據集,所以如果需要對數據集導入要素類,還需要再操作。
使用該功能,用戶可以編輯批處理文件,進行循環的數據導入導出,提供工作效率。
Sde2shp/shp2sde
Sde2shp是ArcSDE數據與Shapefile數據的導出導入命令,因為Shapefile存儲有2GB的限制,所以這種方法使用數據遷移顯得很不靠譜,他適合於如果有用戶沒有安裝ArcGIS客戶端,而且有需要使用shapefile格式數據,該方法無疑比較方便。
該方法也支持批處理模式進行循環使用。
該命令不支持64位操作系統。
在使用shp2sde時,默認是不導入其他屬性字段的,如果需要將其他屬性字段都導入到SDE中需要添加參數-a
使用方法:
- C:/ >shp2sde -o create -l dddw,shape -f c:/1.shp -u sde -p sde -a all
- ArcSDE 9.3.1 for Oracle11g Build 1632 Thu Feb 26 12:05:37 2009
- Shape to Layer Loading Administration Utility
- -----------------------------------------------------
- Set X_offset = 506464
- Set Y_offset = 3845496
- Set XY_scale =1000000000000
- Set Grid Size0 = 62
- 1207 features converted.
- 1207 features stored.
數據庫遷移方式
Impdp/expdp
如果Oracle數據庫比較熟悉的用戶可能選擇使用Oracle的方法進行數據遷移,但是這需要比較深厚的Oracle基礎做支撐,出現一些簡單的問題可以自行解決,這一點對ArcGIS數據的遷移都是支持的。
使用方式:http://wenku.baidu.com/view/13dda98102d276a200292eea.html
盡管這樣我們不建議用戶使用該方式。最主要的問題不安全。
有些用戶喜歡利用Oracle的數據庫操作方式來操作ArcGIS的Schema表,我們曾經不斷強調ArcGIS的表之間都是有相互關系的,如果對這些表不太熟悉的話,是不能僅僅通過數據表的名稱來理解ArcGIS的數據存儲,有些情況下某些信息不僅僅是存儲在你以為的一個表或者兩個表中的。
典型問題:使用數據泵進行遷移,假設源數據有sde用戶,gis1用戶,gis2用戶,可能用戶只將sde用戶和gis1用戶的數據進行了遷移,gis2用戶可能不再需要了,就用管了,數據導入之后應該沒有問題,但是在使用ArcCatalog創建某個名稱的要素類時系統會提示你已經存在該名稱的要素類了,但是檢查gis1用戶下所有的數據表並沒有發現該名稱的表,這是為什么呢?
解答:因為我們使用arcSDE進行管理數據,那么所有通過arcSDE入庫的數據都會在ArcSDE的Schema進行注冊,也就是如上所示gis1、gis2下所有用戶的表都會在arcSDE的某幾個表進行存儲,但是用戶只遷移了gis1用戶,gis2用戶並沒有遷移,但是gis2的表信息等都在sde某個表進行存儲了,所以在創建新要素類時會檢查sde schema的相關信息,可能你所創建的信息已經存儲了(就是gis2下的某個表),所以就會報這個問題。
冷備份
冷備份是我們最推薦用戶如果想使用Oracle方式進行備份的一種,因為他操作簡單,而且主要都是物理文件的遷移,只要不漏文件,一般沒有什么問題。
缺點:如果是7×24小時的用戶可能就不行了。
優點:大數據量效率也是可以保證。
操作步驟:http://wenku.baidu.com/view/ae5e538271fe910ef12df832.html
RMAN
其實不管是什么軟件只要是在Oracle數據庫存儲,肯定oracle對這些東西最了解,Oracle也會用自己特有的方式進行遷移,RMAN無疑是最安全,最高效的方式。
缺點:技術含量高(目前我也沒有試驗過)
優點:任何情況都可以。
總結
總結一下就是,如果用戶需要對ArcSDE數據進行遷移或者備份等,我們還是建議使用arcGIS的方式來做,如果數據庫水平比較高的盡量也是建議用戶使用冷備份或者RMAN來操作。
摘自:linghe301