Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Руководство администратора.doc
Скачиваний:
57
Добавлен:
12.03.2016
Размер:
14.16 Mб
Скачать
      1. Импорт данных

Импорт данных из файла в базу данных представляет собой загрузку изменений, содержащихся внутри файла, в базу данных. Импорт выполняется на базе данных – приемнике файла данных egp, и совмещается с функцией обнаружения логических ошибок при добавлении/изменении/удалении данных. В файле содержатся заголовок и таблицы данных. Данные в таблицах считаются новыми по отношению к данным в базе данных и загружаются следующим образом.

Если в БД есть запись с таким же идентификатором, что и в присланном файле, то эта запись обновляется значениями из файла, если же такой записи нет, то она добавляется в базу данных.

Отдельно производится удаление удаленных записей, процедура просматривает присланный журнал (EXP_LOG), и для тех записей, которые в БД отправителя были удалены, выполняет операцию удаления.

Импорт может быть осуществлен двумя способами:

  • С помощью клиентской части программы обмена данными;

  • С помощью службы автообмена (см. ниже).

В обоих случаях процедура импорта идентична, действия выполняются одни и те же.

Загружаться могут следующие типы файлов:

  • Файлы данных (egp) - это файлы, содержащие данные полной выгрузки или выгрузки изменений;

  • Файлы подтверждений (verify-файлы, расширениеvrf). При загрузке файлов данного типа устанавливается подтверждение на выгрузку;

  • Файлы, содержащие данные, которые не были загружены при обработке файла из-за ошибок, возникающих при выполнении операции по изменению данных (err-файлы, расширениеegp). Использование данных файлов подразумевает следующее: если исправить причины, приведшие к ошибке, и заново обработать ERR файл, причем в данном случае ошибок уже не будет, то в результате произойдет формирование подтверждения. ERR файлы имеют такой же формат, как и основные файлы данных, только содержат именно те данные, которые не смогли быть загружены;

  • Сжатые файлы данных в формате ZIP. При обработке данных, сжатых с использованием ZIP, программа автоматически распаковывает данные, содержащиеся в архиве.

Ниже представлены основные положения, согласно которым осуществляется загрузка (импорт) данных:

  • Загрузка производится напрямую из файла в БД. Перед загрузкой программа проверяет, является ли текущее представительство получателем данного файла (список получателей хранится в заголовке файла, и вы можете посмотреть его клиентской частью системы обмена (Подключить - Просмотр файла данных обмена)). Загрузка производится по следующему алгоритму:

  1. Проверка того, что файл выгрузки предназначен для текущего представительства;

  2. Проверка того, что данный файл уже загружался;

  3. Если делается импорт полной выгрузки, с режимом отключения индексов, индексы переводятся в состояние UNUSABLE, это делается для ускорения загрузки;

  4. Получение списка таблиц в файле из заголовка файла;

  5. Получение списка возвращенных изменений. Например, в случае, если передаются данные из отдела в сектор, то эта выгрузка может содержать данные, переданные сектором ранее, и, если обрабатывать все, то запись будет загружена повторно. Однако эта запись может быть еще раз изменена или удалена в секторе, и в результате она вернется в предыдущее свое состояние, что недопустимо;

  6. Сортировка списка таблиц в зависимости от взаимных связей в БД (foreign constraints). Наверх списка перемещаются родительские таблицы, вниз – подчиненные. Это позволяет выявить порядок обхода таблиц при загрузке.

Внимание! во время работы ни одно из ограничений не отключается, что позволяет выявлять ошибки сразу же при их возникновении, и соответственно информировать детально пользователя о возникающих ошибках. В дальнейшем таблицы обрабатываются в соответствии с полученным списком;

  1. Обновляется тело триггеров таблиц, участвующих в обработке. В тело триггеров добавляется возможность отключения триггера, посредством установки флага EXCH2.IS_IMPORTING(подробней см. ниже);

  2. Устанавливается флаг EXCH2.IS_IMPORTINGдля отключения всей функциональности триггеров в данном сеансе. Для остальных пользователей функциональность не отключается, и они могут работать одновременно с загрузкой изменений.

  3. Просматривается таблица EXP_LOGв файле, и, если в ней содержатся информация об удалении записей, то согласно отсортированному списку, в обратной последовательности, т.е. с конца списка, производятся удаления в каждой из таблиц с помощью командыDELETE;

  4. По каждой из таблиц в отсортированном списке, начинается вставка новых или обновление имеющихся записей. Запись считается новой всегда, не зависимо от того, добавлена она или изменена. Обработка производится по следующему алгоритму: пытаемся обновить, если не найдено записей для обновления, то вставляем запись. При выполнении этого кода используется технология передачи параметров в запрос Oracle Array Binding, что позволяет значительно ускорить процесс.

  5. Копируется журнал (если есть, из EXP_LOG). Это делается для того, чтобы потом можно было выгрузить изменения в другие представительства как измененные данные. Однако журнал копируется только при загрузке из представительств нижнего уровня. Причем копируются в представлениеV_EXP_LOG_INS, для того, чтобы вставить изменения в конец списка изменений;

  6. Отрабатываются действия по арестам, согласно алгоритмам пакета EXCH;

  7. Формируется запись в EXP_IMPORTS(журнал загрузок);

  8. Формируется VERIFY-файл(файл подтверждения);

  9. Делается COMMIT(подтверждение) транзакции;

  10. Если включен режим отключения индексов полной выгрузки, то индексы включается обратно;

  11. Если во время импорта были ошибки, автоматически формируется файл, содержащий данные только по ошибкам (err_*.egp), формат данного файла такой же как формат обычного файла. Это позволяет затем произвести загрузку только тех данных, которые вызвали ошибки. Более подробно о методах исправления ошибок при загрузке данных см.п.15.2.6;

  • Импорт производится только в рамках одной транзакции. При импорте другие пользователи не увидят изменений, пока полностью не будет подтверждена загрузка. Реализована одновременная работа пользователей ПК ИС ЕГРП и процесса импорта данных;

  • Для полной выгрузки используется режим временного отключения индексов (настоятельно рекомендуется его использовать, так как это позволяет значительно увеличить скорость импорта);

  • Доступен режим импорта данных в чистую схему данных пользователя (при этом создается пользователь, формируются схемы таблиц, и копируются данные). Данный режим может быть полезен при отладке и для просмотра данных, содержащихся в файле;

  • При импорте данных оператору наглядно демонстрируется процесс импорта, а также все диагностические сообщения, возникающие при этом. В любой момент процесс может быть прерван;

  • При загрузке verify-файловимпорт выполняется очень быстро, так как просто ставится отметка о получении и загрузке данных на удаленной стороне.