不同存储类型之间的数据迁移
可使用迁移存储地理处理工具将现有的二进制列、空间列或栅格列从一种存储类型迁移到另一种存储类型。为此,可以指定一个包含 ATTRBUTE_BINARY、GEOMETRY_STORAGE 或 RASTER_STORAGE 参数的配置关键字,并将参数设置为数据转换的目标存储类型。
要了解有关配置关键字和参数的详细信息,请参阅什么是 DBTUNE 配置关键字和参数?及其相关主题。
正确创建关键字,并使关键字包含正确的参数和值,这一点非常重要。如果指定的关键字中包含不正确的信息或缺少必要的信息,将会从 DEFAULTS 关键字读取所需信息。Esri 建议您专门为迁移创建自定义关键字。确保关键字中包含将要向其中迁移数据的参数和值,以及 UI_TEXT 参数。UI_TEXT 参数使关键字也可用于 ArcGIS 客户端。
使用 sdedbtune 命令添加关键字或更改现有关键字和参数设置。ArcSDE 管理命令工具及文档可与 ArcSDE 应用程序服务器一同安装。
以下是各数据库管理系统 (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 表中的相应列。如果要素类启用了存档,也将更新存档表中的相应列。
迁移数据的原因
迁移数据的原因有以下两个:
- 使用结构化查询语言 (SQL) 访问空间数据或栅格数据
- 从将来可能不受支持的数据类型迁移到受支持的数据类型
使用 SQL 访问数据
通过 SQL 访问地理数据库中的信息允许外部应用程序(不是在 ArcObjects 环境中开发的应用程序)使用地理数据库管理的表格数据。如果这些外部应用程序需要访问地理数据库中的空间数据或栅格数据,您必须将空间数据或栅格数据存储为允许 SQL 访问的数据类型。例如,ST_Raster 存储类型允许通过 SQL 访问栅格数据。如果将栅格数据存储在 BLOB、LONG RAW、IMAGE、BINARY 或 BYTEA 字段中,将无法轻松访问这些数据。
迁移将来版本可能不支持的数据类型
Oracle 建议在其数据库中使用 BLOB 或 BFILE 数据类型,不建议使用 LONG RAW 数据类型。尽管目前仍支持 LONG RAW 列,但为了防止该数据类型将来不受支持,应将 Oracle 中当前地理数据库的 LONG RAW 类型属性、几何或栅格字段迁移到其他格式。
地理数据库中属性列、几何列和栅格列的存储分别由 DBTUNE 参数 ATTRIBUTE_BINARY、GEOMETRY_STORAGE 和 RASTER_STORAGE 控制。这些参数在 DBTUNE DEFAULTS 配置关键字下的默认值并不相同,具体取决于创建地理数据库时使用的 ArcGIS 的版本。下表显示了 Oracle 中地理数据库的 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 设置并迁移数据。
从 ArcGIS 10.1 开始,在 SQL Server 的地理数据库中创建的要素类默认使用 Microsoft 几何类型。要将现有要素类移动到几何存储类型,请使用迁移存储地理处理工具或 Python 脚本。
迁移的前提条件
转换数据之前必须满足以下条件:
- 在迁移数据之前,必须对数据进行备份。
- 如果要转换空间列数据类型,必须采用高精度存储数据。如果当前采用基本精度存储数据,则必须首先将数据迁移到高精度,然后才能迁移存储类型。可以使用升级空间参考地理处理工具或通过 sdelayer 命令执行 alter 操作来迁移到高精度。有关迁移数据集精度的信息,请参阅迁移到高精度。
- 如果要转换空间列,表必须包含 ObjectID 列。将图层注册到地理数据库的操作会自动添加此列。
- 迁移数据类型时所指定的配置关键字的 GEOMETRY_STORAGE、ATTRIBUTE_BINARY 或 RASTER_STORAGE 必须含有正确的值。例如,如果要将 LONG RAW 几何列迁移到 ST_GEOMETRY,但指定的关键字却将 GEOMETRY_STORAGE 参数设置为 SDO_GEOMETRY,迁移会因迁移路径不受支持而失败。
- 由于可以将属性、栅格和几何存储迁移到 Oracle 中的 BLOB 数据类型,因此建议您在继续进行迁移之前阅读主题 Oracle 中地理数据库的 BLOB 数据存储。
- 必须以包含将要迁移的列的表的所有者身份登录。
- 将要素类迁移到 SQL Server GEOGRAPHY 类型的要求:数据必须采用 GEOGRAPHY 类型支持的地理坐标系。提示:
SQL Server GEOGRAPHY 类型支持并可配合使用的坐标系在 SQL Server 系统视图 sys.spatial_reference_systems 中列出。
- 如果地理数据库位于 SQL Server 2008 或 2008 R2 中,迁移到 SQL Server GEOGRAPHY 类型的要素类不能包含 z 或 m 坐标值。