PostgreSQL空間數據庫建立備份恢復(PostGIS vs ArcGIS)

PostGIS

建立

安裝就沒必要介紹了,windows下使用安裝工具Application Stack Builder,選擇空間擴展PostGIS便可自動安裝sql

而後新建庫後,在庫中執行如下語句建立控件擴展數據庫

CREATE EXTENSION postgis
複製代碼

也能夠建立數據庫時選擇postgis的模板庫建立windows

create database postgisdb template postgis_template;
複製代碼

新建數據庫後添加postgis擴展後會發現庫內public模式下函數序列觸發器等都會增長一些postgis相關功能
而後就能夠經過PostGIS Shapefile and DBF Loader工具導入shp數據bash

備份

postgersql的備份恢復主要有函數

  1. 增量備份和基於時間點恢復(RITR)
  2. pg_dump和pg_dumpall進行轉儲,從SQL轉儲文件恢復
  3. 文件系統級別備份

這裏咱們使用簡單,容易掌握的pg_dump命令,通常在安裝目錄bin下
pg_dump備份單庫,不導出角色和表空間相關信息工具

pg_dump -h localhost -U postgres postgisdb > D:\backup\postgisdb.bak
複製代碼

有一些參數選項能夠參考(不少,具體不列了,執行help能夠查看到)post

pg_dump --help
複製代碼
恢復

恢復可使用psqlui

psql -h localhost -U postgres -d postgisdb2 < D:\backup\postgisdb.bak
複製代碼

恢復時能夠指定不一樣的數據庫,若是pg_dump時-C建立數據庫,那也能夠不用先新建數據庫spa

postgis庫的恢復備份仍是挺簡單的,全部的東西都在public下版本控制

ArcGIS

建立

ArcGIS要鏈接到postgresql,須要將postgresql安裝目錄lib下的libeay32.dll、libiconv-2.dll、libintl-8.dll、libpq.dll 和 ssleay32.dll拷貝到ArcGIS Desktop的安裝目錄bin下
將ArcGIS Desktop目錄DatabaseSupport\PostgreSQL下的st_geometry.dll拷貝到postgresql的lib下

使用ArcGIS工具箱中Create Enterprise Geodatabase工具建立SDE,完過後會在建立一個sde登錄角色並在庫中建立一個sde模式,包含諸多函數序列管理表等。(注意:ArcGIS雖然能夠在系統庫postgres中建立SDE擴展,然並連不上,ArcGIS不容許鏈接訪問系統數據庫

而後ArcGIS能夠鏈接該數據庫,而且進行空間數據管理操做。(注意:默認ArcGIS建立空間數據,只能建立在和登錄用戶同名的模式下

備份

咱們能夠向上面PostGIS備份恢復同樣,直接備份整個庫

恢復

若是恢復至同名數據庫,像上面恢復是沒有問題的
但若是數據庫更名了,則會有驚喜發生,ArcGIS管理空間報底層gdb_release之類的錯誤,一樣的問題不止恢復庫時,修改數據庫名稱也不像其餘庫那麼爲所欲爲,以含SDE擴展的庫爲模板建立新庫也會有問題

ArcGIS SDE未見文檔介紹內部結構邏輯,只能猜想大概,或不許確,願聞其詳

ArcSDE空間數據建立時會在SDE管理表裏註冊相關信息,好比空間參考,列啊,表的惟一標識等,便於它作數據管理、版本控制

修改庫名後,ArcSDE管理就出問題,主要是一些註冊項,安裝SDE時也會把該庫的信息註冊到SDE管理表中去,因此新庫名,它就不認識了

若是修改了庫名,咱們找到如下表

select * from sde.gdb_items
you need modify : name physicalname path etc...

update sde.sde_table_registry set database_name='testdb';
update sde.sde_column_registry set database_name='testdb';
update sde.sde_geometry_columns set f_table_catalog='testdb';
update sde.sde_raster_columns set database_name='testdb';
update sde.sde_layers set database_name='testdb';
複製代碼

而後就一切正常

固然咱們建議不輕易改庫名

這就是商業軟件,足夠強大不夠靈活,封裝和靈活總會互相博弈

相關文章
相關標籤/搜索