(Продолжение. Начало в №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
Горячие темы