СУБД LeoBase: возможности экспорта и импорта данных

(Продолжение. Начало в №7-9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)

Сегодня мы расскажем о возможностях экспорта и импорта данных в LeoBase.

Сегодня СУБД LeoBase поддерживает экспорт и импорт данных в текстовом (ASCII) формате. Для этого предусмотрены две утилиты. Одна из них - TXT2LBF - импортирует данные в определенную БД, другая - LBF2TXT - экспортирует данные в текстовый файл.

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

Дополнительно, по результатам экспорта-импорта данных, формируется файл отчета, содержащий:

  • сведения об ошибках LeoBase, если таковые возникали;
  • сведения об ошибках, обнаруженных в отброшенных записях;
  • количество обработанных строк файла данных;
  • количество загруженных (выгруженных) записей;
  • время, затраченное на работу.

Файл исходных данных представляет собой обычный текстовый файл MS-DOS. На его строке находятся поля записи БД, которые необходимо импортировать. Если поля неудобно размещать на одной строке, их можно разместить на нескольких. При этом, в конце каждой из строк, кроме последней, должен стоять символ-соединитель, служащий для объединения нескольких строк файла в одну. При экспорте символ-соединитель никогда не присутствует в файле данных, так как СУБД экспортирует одну запись БД на одной строке текстового файла. Вовсе необязательно, чтобы в файле данных находились все поля записи БД. С помощью управляющего файла можно задать, какие конкретно поля и в каком порядке должны импортироваться (экспортироваться). Если при импорте вместо значения поля целочисленного стандартного типа в строке данных стоит слово RND, то это означает, что в записи БД в этом поле будет находиться случайное число, генерируемое в процессе импорта данных.

Значения полей в БД (особенно строковых) могут содержать любые символы, вплоть до последовательности CR/LF (перевод строки и возврат каретки), которые являются символом новой строки. Для этих и других случаев утилита LBF2TXT при выводе в файл данных строк, содержащих символы с кодами 0...31, конвертирует их в последовательность символов, представляющих собой шестнадцатеричные коды этих символов с соответствующим разделителем впереди, обозначающим начало шестнадцатеричного кода символа. Этот код состоит из двух цифр (символ с кодом 10 закодируется как 0А). Значение разделителя может составлять до двух символов и равно по умолчанию '\x'. При импорте данных в строках файла данных возможно самостоятельно задавать закодированные символы. Например, строка "\x41BCD" воспримется утилитой TXT2LBF как ABCD.

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

При экспорте значений полей реляционных ссылок как уникальных значений ключевых полей возникает вопрос: как интерпретировать пустые реляционные ссылки? Их нельзя интерпретировать как пустые значения полей, поскольку они могут содержаться в подчиненной БД и, следовательно, при импорте этих данных реляционные ссылки будут проставлены на записи, содержащие эти значения. Решение этой проблемы следующее: пользователь должен указать так называемые сигнатуры реляционных полей для каждого поля реляционной ссылки, экспортируемого таким образом. Сигнатура представляет собой значение ключевого поля, по которому идет связывание командной БД с подчиненной, которое гарантированно не встречается в подчиненной БД. Тогда поиск этого значения поля при импорте закончится неуспехом, и в поле реляционной ссылки будет проставлено нулевое значение.

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

Управляющий файл представляет собой текстовый файл MS-DOS (INI-файл), содержащий установки по импорту (экспорту) данных. Все установки разделены на группы, и каждая установка должна находиться строго в своей группе. Перечислять названия этих групп нет необходимости, однако упомянем, что можно настраивать главный и вспомогательные каталоги, указывать программные имена полей, которые можно импортировать или экспортировать, а также то, где они находятся; устанавливать виды интерпретации значений полей реляционных ссылок и memo-полей. Можно задать должны ли быть уникальными в БД те записи, которые в нее импортируются. В случае экспортирования есть возможность выделить записи БД, подлежащие экспорту.

В следующей статье мы расскажем про систему буферизации LeoBase - LeoBase Smart Filer.

(Продолжение следует)

Владимир КОТЛЯРОВ,
"СофтИнформ", тел. 213-28-13,
e-mail:
ui@activ.minsk.by

Версия для печатиВерсия для печати

Номер: 

22 за 1997 год

Рубрика: 

Базы данных
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!