使用 ArcSDE 命令迁移栅格列
要更改栅格数据的存储类型,请使用 sdetable 命令的 migrate 操作。这将会使栅格块表 (sde_blk_<id>) block_data 列和栅格辅助表 (sde_aux_<id>) 对象列中的数据从 LONG RAW 数据存储转换为 BLOB,或者从 BLOB 转换为 Oracle 中的 ST_RASTER 或转换为 PostgreSQL 和 SQL Server 中的 ST_RASTER。语法如下:
sdetable –o migrate –l <table,raster_column> –k <config_keyword> [–i {<service> | <direct_connection>] [–s <server>] [–D <database>] –u <user> [–p <password>] [–N]
根据以下说明使用各选项:
选项 |
描述 |
---|---|
–o |
此选项指定要执行的操作,在本示例中为 migrate。 |
–l |
使用此选项可指定包含待迁移栅格列的表名称。 |
–k |
使用此选项可指定 DBTUNE 配置关键字,该关键字用于定义栅格目录将迁移到的栅格存储类型。指定的关键字必须包含设置为 BLOB(仅限 Oracle)或 ST_RASTER 的 RASTER_STORAGE 参数。 |
–i |
提供直连语法,或者提供用于连接到地理数据库的 ArcSDE 服务的端口号或名称。 |
–s |
指定数据库所在的服务器的名称。 |
–D |
指定数据库或数据源的名称。 此选项不适用于 Oracle 数据库。 |
–u |
指定要素类所有者登录数据库使用的用户名。 |
–p |
指定用户密码。 |
–N |
如果要禁止显示要求用户确认操作的提示,则指定此选项。 |
使用 sdetable 命令的 migrate 操作时,如果以下任一情况为真,则将显示一条错误消息:
使用 sdelayer 命令的 migrate 操作时,如果以下任一情况为真,则将显示一条错误消息:
- 使用 –u 指定的用户不是表所有者。
- 栅格现有存储类型与指定的 DBTUNE 关键字相同。(也就是说,该表已经在使用您通过关键字指定的存储类型;因此,无需迁移。)
- 业务表不包含对象 ID 字段。
- 尝试在早于版本 9.2 的 ArcSDE 地理数据库中使用迁移操作。
- 尝试在 Oracle、SQL Server 或 PosgreSQL 以外的 DBMS 中使用 sdetable 命令的 migrate 操作。
- 您正在转换为 ST_Raster 类型,但数据库中未安装该类型。
通过迁移操作迁移 Oracle 数据库中的数据存储类型时,将在数据要复制到的数据库中创建一个新段。迁移完成后,元数据会重新指向新段,旧段将被删除。这意味着在迁移过程中的某一时刻会有两个数据副本。因此,数据库必须具有足够空间可存储这两个副本。
-
对要迁移的数据创建备份。
对要迁移的数据创建备份副本,可以确保在迁移因任何原因失败后,您仍然具有一份原始数据。
- 打开 DOS 命令提示符 (Windows) 或 shell 命令提示符(UNIX 或 Linux)。
-
执行 sdetable 命令的 migrate 操作。例如:
sdetable –o migrate –l watershed,raster –k ST_RASTER –i sde:sqlserver:mainserver\ssdb –s mainserver –D mydb –u bjar –p mine.all.mine
务必指定一个包含 RASTER_STORAGE 值(数据将转换为该值)的配置关键字。