1. 程式人生 > >SDE For PostgreSQL資料庫改名方法

SDE For PostgreSQL資料庫改名方法

從ArcGIS9.3,SDE開始支援PostgreSQL,經過這麼多年的發展,SDE已經到了10.5版本了,從9.3到10.5,從功能,效能方面都發生了很多變化,但是不論是用老版本的sdesetup命令還是新版本的Create Enterprise Geodabase工具建立的Geodatabase都將資料庫的名字寫到系統表中了,因此以後如果資料庫要遷移,目標資料庫的名字是不能變更的,在實際的生產過程中會產生諸多不便,如果直接在資料庫層面講資料庫名字修改掉,會導致ArcGIS整個前端工具以及開發介面都無法使用。

但是可以通過修改系統表的方法將資料庫名字修改成別的名字,測試過程如下:

測試環境:
ArcSDE 10.5
PostgreSQL:9.4.10
資料庫名稱:SDE1
目標資料庫名稱:SDE

測試過程如下:
直接在資料庫層面將資料庫名稱修改成SDE。

postgres=# alter database sde1 rename to sde;
ALTER DATABASE

使用桌面進行連線報如下錯誤:
這裡寫圖片描述

說明直接從資料庫上改名是行不通的。

繼續:
修改GDB_ITEMS表中的與資料庫名繫結的相關資訊

這裡寫圖片描述

sde=# update sde.gdb_items set name='sde.sde.image',physicalname='SDE.SDE.IMAGE'
 where objectid=4;
UPDATE 1
sde=# update sde.gdb_items set
name='sde.sde.testpoint',physicalname='SDE.SDE.TE STPOINT' where objectid=5;
UPDATE 1 sde=# update sde.gdb_items set name='sde.sde.subdltb',physicalname='SDE.SDE.SUBD LTB' where objectid=6; UPDATE 1

修改sde.sde_column_registry

sde=# update sde.sde_column_registry set database_name='sde';
ERROR:  insert
or update on table "sde_column_registry" violates foreign key con straint "colregistry_fk" 描述: Key (table_name, schema, database_name)=(gdb_tables_last_modified, sde, s de) is not present in table "sde_table_registry". sde=# update sde.sde_table_registry set database_name='sde';
UPDATE 13 sde=# update sde.sde_column_registry set database_name='sde'; UPDATE 125

修改sde.sde_geometry_columns中的相關記錄

sde=# update sde.sde_geometry_columns set f_table_catalog='sde';
UPDATE 4

修改sde.sde_raster_columns相關資訊

sde=# update sde.sde_raster_columns set database_name='sde';
UPDATE 0

修改sde.sde_layers 中的相關資訊

sde=# update sde.sde_layers set database_name='sde';
UPDATE 4

修改完後,使用桌面成功連線。