Перенос данных из одного типа хранения в другой
Инструмент геообработки Изменить тип хранения (Migrate Storage) можно использовать, чтобы переносить двоичные, пространственные и растровые столбцы из одного типа хранения в другой. Для этого необходимо указать ключевое слово конфигурации, содержащее параметр ATTRBUTE_BINARY, GEOMETRY_STORAGE или RASTER_STORAGE, указывающий новый тип хранения, в который требуется преобразовать данные.
Важно, чтобы ключевое слово включало правильный параметр и его значение. Если указать ключевое слово с неправильной информацией или не указать часть данных, сведения считываются из ключевого слова DEFAULTS. Поэтому компания Esri рекомендует создать пользовательское ключевое слово специально для переноса данных. Оно обязательно должно содержать параметр и значение, определяющие тип хранения, в который переносятся данные, а также параметр UI_TEXT. Параметр UI_TEXT позволяет использовать ключевое слово в клиентах ArcGIS.
Чтобы добавить ключевое слово в таблицу DBTUNE, необходимо выполнить команду sdedbtune. Вместе с сервером приложений ArcSDE можно установить инструменты командной строки для администрирования ArcSDE.
Сведения о ключевых словах и параметрах конфигурации см. в разделе Что представляют собой ключевые слова конфигурации DBTUNE и их параметры? и связанных разделах.
Далее представлены поддерживаемые системой управления базами данных (СУБД) пути переноса данных:
СУБД |
Параметр конфигурации |
Перенос из/в |
---|---|---|
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 должен быть установлен в базу геоданных. Инструкции см. в разделах Установка типа ST_Raster в Oracle, Установка типа ST_Raster в PostgreSQL или Установка типа ST_Raster в SQL Server.
Если переносимая таблица зарегистрирована как версионная, при ее переносе в другой тип хранения также обновляются соответствующие столбцы в таблице добавлений (Adds). Если для класса объектов разрешено архивирование, столбцы архивной таблицы также обновляются.
Зачем переносить данные?
Существует две причины для переноса данных: 1) чтобы иметь доступ к пространственным и растровым данным с помощью языка SQL; 2) для переноса из типа данных, который не будет поддерживаться в будущем в тип данных, который поддерживается.
Доступ с помощью SQL
Доступ к информации в базе геоданных через SQL позволяет внешним приложениям (разработанным не в среде ArcObjects) работать с табличными данными, управляемыми базой геоданных. Если этим приложениям требуется доступ к пространственным или растровым данным в базе геоданных, вы должны сохранить их в типах данных, предоставляющих доступ через SQL. Например, использование типа хранения ST_Raster позволяет получить доступ к растровым данным с помощью SQL, что не так просто при хранении растровых данных в поле BLOB, LONG RAW, IMAGE, BINARY или BYTEA.
Перенос из типов, которые не будут поддерживаться в будущих версиях
Oracle рекомендует использовать типы данных BLOB или BFILE вместо LONG RAW в своих базах данных. Хотя столбцы LONG RAW все еще поддерживаются, если у вас есть атрибут, геометрия или растровые поля типа LONG RAW в базе геоданных ArcSDE в Oracle, вы должны перенести их в другой формат, чтобы подготовиться к тому, что они больше не будут поддерживаться.
Хранением атрибутов, геометрии и растровых столбцов в базе геоданных управляют параметры DBTUNE: ATTRIBUTE_BINARY, GEOMETRY_STORAGE и RASTER_STORAGE соответственно. Значения по умолчанию для этих параметров в ключевом слове DBTUNE DEFAULTS зависят от версии ArcGIS, использованной при создании базы геоданных. В следующей таблице показаны значения параметров ключевого слова DEFAULTS по умолчанию в таблице DBTUNE баз геоданных ArcSDE в Oracle.
Параметр |
Стандартное значение в 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 Geometry. Для перемещения существующих классов объектов в тип хранения геометрии используйте инструмент геообработки Изменить тип хранения (Migrate Storage) или скрипт Python.
Чтобы изменить настройки DBTUNE, используйте команду sdedbtune для добавления параметра в существующее ключевое слово или экспорта, изменения и импорта содержимого таблицы DBTUNE. Дополнительные сведения по использованию команды sdedbtune см. в справке по командам администрирования ArcSDE. Как было сказано ранее, инструменты администрирования командной строки ArcSDE устанавливаются отдельно и их можно загрузить с портала Esri Customer Care Portal.
Перед переносом данных...
Перед преобразованием данных необходимо выполнение следующих условий:
- Вы должны создать резервную копию данных перед тем, как их переносить.
- При преобразовании пространственного столбца данные должны храниться в пространственной привязке высокой точности. Если данные хранятся в базовой точности, сначала их нужно перевести в высокую точность для изменения типа хранения. Это можно сделать с помощью инструмента геообработки Обновить пространственную привязку (Upgrade Spatial Reference) или с помощью команды sdelayer с операцией alter. Дополнительные сведения см. в разделе Переход к использованию большей точности данных.
- При преобразовании пространственного столбца таблица должна содержать столбец object ID. При регистрации слоя в базе геоданных этот столбец добавляется автоматически.
- Ключевое слово конфигурации, указываемое при переносе типа данных, должно содержать правильное значение параметра GEOMETRY_STORAGE, ATTRBUTE_BINARY, или RASTER_STORAGE. Например, если требуется перенести столбец геометрии LONG RAW в ST_GEOMETRY, но указано ключевое слово с параметром GEOMETRY_STORAGE, заданным как SDO_GEOMETRY, перенос данных завершится ошибкой, так как такой путь переноса не поддерживается.
- Когда данные переносятся из одного типа данных в другой, создается новый сегмент в базе данных, в которую копируются данные. После завершения переноса метаданные настраиваются на новый сегмент, а старый удаляется. Это означает, что во время переноса существует две копии данных, поэтому убедитесь, что в базе данных достаточно места для двух экземпляров данных.
- Так как хранилище атрибутов, растровых данных и геометрии можно перенести в тип данных BLOB в Oracle, рекомендуется прочитать раздел Тип данных BLOB в базах геоданных в Oracle перед началом переноса.
- Вы должны войти в систему как владелец таблицы, содержащей переносимый столбец.
- Для переноса класса объекта в тип SQL Server GEOGRAPHY, данные должны быть в одной из систем координат, поддерживаемых типом GEOGRAPHY, а класс объекта не должен содержать значения Z и M.Подсказка:
Список поддерживаемых систем координат, которые можно использовать с типом SQL Server GEOGRAPHY, можно найти в системном представлении SQL Server, sys.spatial_reference_systems.