使用 ArcSDE 命令将几何从一种存储类型迁移到另一种存储类型
可以使用 sdelayer 命令的 migrate 操作更改 Oracle 或 Microsoft SQL Server 中的地理数据库内的要素类所使用的几何存储。迁移操作将要素类的几何存储更改为使用 –k 选项指定的 DBTUNE 配置关键字中的几何存储类型。
正确创建关键字,并使关键字包含正确的参数和值,这一点非常重要。如果指定的关键字中包含不正确的信息或缺少必要的信息,将会从 DEFAULTS 关键字读取所需信息。因此,ESRI 建议专门为迁移创建一个自定义关键字并确保其包含数据要迁移的目标存储类型的参数和值以及 UI_TEXT 参数。UI_TEXT 参数使关键字也可用于 ArcGIS 客户端。
带 migrate 操作的 sdelayer 命令的语法如下:
sdelayer –o migrate –l <table,column> –k <config_keyword> [–i {<service> | <direct_connect>}] [–s <server>] -D [<database_name>] –u <user_name> [–p <user_password>] [–N] [–q]
根据以下说明使用各选项:
选项 |
描述 |
---|---|
–D | 使用此选项指定数据库名称。此选项不适用于 Oracle 数据库。 |
–o |
此选项指定要执行的操作,在本示例中为 migrate。 |
–l |
使用此选项可指定要素类业务表名称和指定要迁移几何类型的 shape 列的名称。这两个名称使用逗号(不空格)分隔。 |
–k |
此选项指定 DBTUNE 配置关键字,该关键字用于定义要素类将迁移到的几何存储类型。关键字必须包含设置为 SDELOB 或 ST_GEOMETRY 的 GEOMETRY_STORAGE 参数(在 Oracle 数据库中),或设置为 GEOMETRY 或 GEOGRAPHY 的 GEOMETRY_STORAGE 参数(在 SQL Server 数据库中)。 |
–i |
提供直连语法,或者提供用于连接到地理数据库的 ArcSDE 服务的端口号或名称。 有关直连语法的信息,请参阅通过 ArcSDE 命令直连到 Oracle 中的地理数据库 (geodatabase) 或通过 ArcSDE 命令直连到 SQL Server 中的地理数据库 (geodatabase)。 |
–s |
指定数据库所在的服务器的名称。 |
–u |
指定要素类所有者登录数据库使用的用户名。 |
–p |
指定用户密码。 |
–N |
如果要禁止显示要求用户确认操作的提示,则指定此选项。 |
–q |
如果要禁止显示所有标题和警告,则指定此选项。 |
使用 sdelayer 命令的 migrate 操作时,如果以下任一情况为真,则将显示一条错误消息:
- 以基本精度存储数据。
- 使用 –u 指定的用户不是表所有者。
- 要素类的现有存储类型与指定的 DBTUNE 关键字相同。(也就是说,该表已经在使用您通过关键字指定的存储类型;因此,无需迁移。)
- 业务表不包含对象 ID 字段。
- 尝试在早于版本 9.2 的 ArcSDE 地理数据库中使用迁移操作。
- 尝试在 Oracle 或 SQL Server 以外的 DBMS 中使用迁移操作。
如第一个点号后的文字所述,必须先将要素类从基本精度迁移到高精度,然后才可迁移几何存储。可使用 sdelayer 命令的 alter 操作或使用升级空间参考地理处理工具完成此操作。
无法将包含 3D 数据或度量数据的二进制要素类迁移到 SQL Server 地理类型。
-
对要迁移的数据创建备份。
对要迁移的数据创建备份副本,可以确保在迁移因任何原因失败后,您仍然具有一份原始数据。
- 打开 DOS 命令提示符 (Windows) 或 shell 命令提示符(UNIX 或 Linux)。
-
执行 sdelayer 命令的 migrate 操作。例如:
sdelayer –o migrate –l colpts,geometry –k GEOMETRY -i sde:sqlserver:myserver\myssinstance -D mygdb -u dataowner1 -p notforu
务必指定一个包含 GEOMETRY_STORAGE 值(数据将转换为该值)的配置关键字。