不同存储类型之间的数据迁移
可以使用迁移存储地理处理工具、ArcSDE 管理命令、ArcObjects 或 ArcSDE API 将现有的二进制列、空间列或栅格列从一种存储类型迁移到另一种存储类型。为此,可以指定一个包含 ATTRBUTE_BINARY、GEOMETRY_STORAGE 或 RASTER_STORAGE 参数的配置关键字,并将参数设置为数据转换的目标存储类型。
正确创建关键字,并使关键字包含正确的参数和值,这一点非常重要。如果指定的关键字中包含不正确的信息或缺少必要的信息,将会从 DEFAULTS 关键字读取所需信息。因此,ESRI 建议专门为迁移创建一个自定义关键字并确保其包含数据要迁移的目标存储类型的参数和值以及 UI_TEXT 参数。UI_TEXT 参数使关键字也可用于 ArcGIS 客户端。
要了解有关配置关键字和参数的详细信息,请参阅什么是 DBTUNE 配置关键字和参数?及其相关主题。
以下是数据库管理系统 (DBMS) 所支持的迁移路径:
DBMS |
配置参数 |
迁移路径 |
---|---|---|
Oracle |
ATTRIBUTE_BINARY |
从 LONG RAW 到 BLOB |
GEOMETRY_STORAGE |
从 LONG RAW (SDEBINARY) 到 BLOB (SDELOB) | |
从 LONG RAW (SDEBINARY) 到 ST_GEOMETRY | ||
从 BLOB (SDELOB) 到 ST_GEOMETRY | ||
从 SDO_GEOMETRY 到 ST_GEOMETRY | ||
RASTER_STORAGE |
从 LONG RAW 到 BLOB | |
从 LONG RAW 到 ST_RASTER* | ||
从 BLOB 到 ST_RASTER* | ||
PostgreSQL |
RASTER_STORAGE |
从 BYTEA 到 ST_RASTER* |
SQL Server |
RASTER_STORAGE |
从 IMAGE 到 ST_RASTER* |
GEOMETRY_STORAGE | 从 SDEBINARY 到 GEOMETRY | |
从 SDEBINARY 到 GEOGRAPHY | ||
从 OGCWKB 到 GEOMETRY | ||
从 OGCWKB 到 GEOGRAPHY |
*地理数据库中必须安装 ST_Raster。有关说明,请参阅在 Oracle 中安装 ST_Raster 类型、在 PostgreSQL 中安装 ST_Raster 类型或在 SQL Server 中安装 ST_Raster 类型。
如果将要迁移的表已注册为版本,则将该表迁移到其他存储类型时也将更新 Adds 表中的相应列。如果要素类启用了存档,也将更新存档表中的相应列。
迁移数据的原因
迁移数据的原因有以下两个:1) 能够使用结构化查询语言 (SQL) 访问空间数据或栅格数据;2) 从将来可能不受支持的数据类型迁移到受支持的数据类型。
SQL 访问
通过 SQL 访问地理数据库中的信息允许外部应用程序(不是在 ArcObjects 环境中开发的应用程序)使用地理数据库管理的表格数据。如果这些外部应用程序需要访问地理数据库中的空间数据或栅格数据,您必须将空间数据或栅格数据存储为允许 SQL 访问的数据类型。例如,ST_Raster 存储类型允许通过 SQL 访问栅格数据。如果将栅格数据存储在 BLOB、LONG RAW、IMAGE、BINARY 或 BYTEA 字段中,将无法轻松访问这些数据。
迁移将来版本可能不支持的数据类型
Oracle 建议在其数据库中使用 BLOB 或 BFILE 数据类型,不建议使用 LONG RAW 数据类型。尽管目前仍支持 LONG RAW 列,但为了以防该数据类型将来不受支持,应将 Oracle 中当前 ArcSDE 地理数据库的 LONG RAW 类型属性、几何或栅格字段迁移到其他类型。
地理数据库中属性列、几何列和栅格列的存储分别由 DBTUNE 参数 ATTRIBUTE_BINARY、GEOMETRY_STORAGE 和 RASTER_STORAGE 控制。这些参数在 DBTUNE DEFAULTS 配置关键字下的默认值并不相同,具体取决于创建地理数据库时使用的 ArcGIS 的版本。下表显示了 Oracle 中 ArcSDE 地理数据库的 DBTUNE 表在 DEFAULTS 关键字下的默认设置。
参数 |
ArcGIS 9.3 及更高版本的默认设置 |
ArcGIS 9.2 的默认设置 |
ArcGIS 9.2 之前版本的默认设置 |
---|---|---|---|
ATTRIBUTE_BINARY |
BLOB |
BLOB |
LONG RAW |
GEOMETRY_STORAGE |
ST_GEOMETRY |
LONG RAW (SDEBINARY) |
LONG RAW (SDEBINARY) |
RASTER_STORAGE |
BLOB |
LONG RAW |
LONG RAW |
在新安装的(未升级的)9.3 版本或更高版本地理数据库中使用默认参数设置创建的数据不使用 LONG RAW 存储类型。但是,将任意一个或全部参数设置为 LONG RAW 而创建的现有数据,或者升级的地理数据库中将全部参数均设置为 LONG RAW 而创建的新数据,仍将包含 LONG RAW 列。要更改这些列的数据类型,必须更改 DBTUNE 设置并迁移数据。
要更改 DBTUNE 设置,请使用 sdedbtune 命令向现有关键字添加参数,或者导出 DBTUNE 表的内容,对其进行更改,然后导入。有关使用 sdedbtune 命令的信息,请参阅《ArcSDE 管理命令参考》。
迁移的前提条件
转换数据之前必须满足以下条件:
- 在迁移数据之前,必须对数据进行备份。
- 如果要转换空间列类型,必须采用高精度存储数据。如果当前采用基本精度存储数据,则必须首先将数据迁移到高精度,然后才能迁移存储类型。可以使用升级空间参考地理处理工具或通过 sdelayer 命令执行 alter 操作来迁移到高精度。有关迁移数据集精度的信息,请参阅迁移到高精度。
- 如果要转换空间列,表必须包含对象 ID 列。向地理数据库注册图层时会自动添加此列,您也可以使用 sdetable 命令执行 alter_reg 操作添加此列。
- 迁移数据类型时所指定的配置关键字的 GEOMETRY_STORAGE、ATTRIBUTE_BINARY 或 RASTER_STORAGE 必须含有正确的值。例如,如果要将 LONG RAW 几何列迁移到 ST_GEOMETRY,但指定的关键字却将 GEOMETRY_STORAGE 参数设置为 SDO_GEOMETRY,迁移会因迁移路径不受支持而失败。
- 从一种数据类型向另一种数据类型迁移数据时,将在复制数据的目标数据库中创建新段。迁移完成后,元数据会重嵌到新段中,旧段将被删除。这意味着迁移期间会有两个数据复本;因此,请确保数据库中有足够空间存储这两个复本。
- 由于可以将属性、栅格和几何存储迁移到 Oracle 中的 BLOB 数据类型,因此建议您在继续进行迁移之前阅读主题 Oracle 中地理数据库的 BLOB 数据存储。
- 必须以包含将要迁移的列的表的所有者身份登录。
- 将要素类迁移到 SQL Server GEOGRAPHY 类型的要求:数据必须采用 GEOGRAPHY 类型支持的地理坐标系;要素类不包含 z 或 m 坐标值。提示:
SQL Server GEOGRAPHY 类型支持并可配合使用的坐标系在 SQL Server 系统视图 sys.spatial_reference_systems 中列出。
迁移工具
有关如何迁移数据的信息,请参阅以下主题: