Импорт данных |
Оператор импорта данных дает возможность импортировать данные из текстового файла или файла формата DBASE в таблицу данных, описанную в словаре.
<оператор-импорта-данных> = import <имя-таблицы-приемника> <конструкция-From> [ <параметры-импорта> ] ;
<имя-таблицы-приемника> - имя физической таблицы-приемника.
<конструкция-From> - описание источника импорта:
<конструкция-From> = <тип-источника> <файл-импортер>
<тип-источника> - тип системы, из которой идет импорт:
<тип-источника> = txt | dbf
txt - импорт из текстового файла.
dbf - импорт из файла формата DBASE.
<файл-импортер> - имя файла-импортера.
<параметры-импорта> - указывают особенности выполняемого импорта, действуют в рамках оператора, в котором они заданы:
<параметры-импорта> = [arrangeByName] [arrangeByType] [fullInfo] [skipOverflow] [deleteImporter] [rewriteForNRec]
arrangeByName - сравнение полей по именам. Соответствие полей источника и приемника устанавливается по именам полей. Краткая форма параметра "N". Параметр указывается только при импорте из файла DBASE.
Сравнение имен происходит по первым 10 символам, т.к. длина имени поля в DBF равна 10 символам.
arrangeByType - сравнение полей по типам. Соответствие полей источника и приемника устанавливается по типам полей. Краткая форма параметра "T". Параметр указывается только при импорте из файла DBASE.
По умолчанию поля источника и приемника не проверяются на соответствие по какому-либо признаку, а импортируются по порядку.
fullInfo - создание журнального файла. Все операции импорта журналируются в текстовом файле (файл Journal в текущей директории), который выводится на экран после импорта. Краткая форма параметра "F".
skipOverflow - игнорирование лишних полей источника. При импорте из системы DBF при большем количестве полей у источника, чем у приемника, лишние поля источника не импортируются. Какие поля считаются лишними, зависит от включения параметра arrangeByName или arrangeByType. Краткая форма параметра "S". Параметр указывается только при импорте из файла DBASE. При импорте из системы DBF при большем количестве полей у источника, чем у приемника, импорт не происходит, если не задан параметр skipOverflow.
deleteImporter - удаление файла-импортера. После успешного импорта файл-импортер удаляется. Краткая форма параметра "D".
rewriteForNRec - обновление записей с существующим первичным ключом. Если при импорте запись с таким NRec уже существует в таблице, то ее содержимое обновляется. Параметр указывается только при импорте из DBF. Если параметр не указан, то при импорте записи с существующим NRec будет выдана ошибка "Неуникальный первичный ключ". Краткая форма параметра "R".
Общие соглашения для всех систем-импортеров:
данные из импортируемого файла добавляются к уже существующим данным таблицы (для полной замены данных предварительно надо выполнить оператор delete);
в журнальный файл заносится информация о ходе импорта.
При импорте из неструктурированного файла (текстовый файл):
поля источника и приемника не проверяются на соответствие по какому-либо признаку, а импортируются по порядку;
одна строка импортера соответствует одной записи;
если найден символ конца строки, но не все поля текущей записи заполнены, то оставшиеся поля заполняются значениями по умолчанию.
При импорте из структурированного файла (файл формата DBASE):
проверяется корректность источника как файла системы;
проверяется соответствие структуры таблицы и файла-импортера в зависимости от установленных параметров. Информация о соответствии полей заносится в журнальный файл;
поля приемника, которые не соответствуют ни одному полю источника, заполняются значениями по умолчанию;
значения типа даты из источника кладутся в приемник в формате ГГГГММДД (DBF - формат).
Пример 1
Импорт данных в таблицу Employee из файла employee.dbf
import Employee from dbf employee.dbf;
Пример 2
Импортируется файл test.doc в таблицу Test с созданием журнального файла.
import Test from txt test.doc fullinfo;
Пример 3
Импортируется файл trest.dbf в таблицу Trest. Соответствие полей производится по порядку, т.е. первому полю источника ставится первое поле приемника и т. д.
import Trest from dbf trest;
Пример 4
Импортируется файл perexod.dbf в таблицу Perexod. Соответствие полей производится по именам. Создается журнальный файл с полной информацией о проведении импорта.
import Perexod from dbf perexod.dbf arrangeByName fullInfo;
Пример 5
Импортируется файл perexod.dbf в таблицу Perexod. Соответствие полей производится по именам и типам, т.е. сначала находятся одноименные поля, потом сравниваются их типы.
import Perexod from dbf perexod.dbf arrangeByName arrangeByType;
Пример 6
Импортируется файл edizm.dbf в таблицу Edizm. Соответствие полей производится по типам, т.е. соответствие полей производится по порядку с проверкой типов.
import Edizm from dbf edizm arrangeByType;