Импорт записей из файла


НАЧАЛО >> Синхронизация записей >> Импорт записей из файла📄 Скачать в DOCX


Syncer/ImportFromFile - встроенная функция модуля Syncer для загрузки записей из подготовленного файла в выбранную базу данных. Функция разбирает файл, создает записи, при необходимости применяет FST и сохраняет результат через провайдер базы.

Используйте этот вариант, когда интеграционный сценарий уже нашел файл во входной папке и может передать функции путь к файлу и параметры разбора. Стандартный импорт из каталога в Syncer/Sync использует другой контракт парсера: функция из полей inParserModule и inParserFunction получает содержимое файла, а не путь к нему.

1. Вызов функции

Функция вызывается с тремя аргументами:

$result = UseModule('Syncer')->ImportFromFile($syncOptionsRecord, $filePath, array(
    'dbName' => 'IBIS',
    'fstName' => 'rmarci',
    'codePage' => 'utf8',
    'container' => 'iso',
));

Параметры вызова:

Параметр Назначение
$syncOptionsRecord запись настроек синхронизации или другой объект контекста, передаваемый вызывающим сценарием
$filePath путь к файлу, который нужно импортировать
dbName имя БД, в которую будут сохранены записи
fstName имя FST, применяемой при подготовке записи; можно оставить пустым
codePage кодировка входного файла, например windows-1251, utf8 или cp866
container тип контейнера: iso, text, xml, json или csv

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

2. Поддерживаемые контейнеры

iso - файл в ISO/MARC-представлении. Функция читает длину записи из первых пяти байтов, передает запись в SetFromMarc() с заданной кодировкой и FST, затем сохраняет подготовленную запись.

text - текстовый экспорт ИРБИС. Записи разделяются строкой *****, разбираются через ParseIrbisTxtExpRec(), затем при заполненном fstName дополнительно обрабатываются через FST.

xml - XML-файл со списком записей. Внутри записи ожидаются элементы FIELD.<tag>; подполя читаются из вложенных элементов SUBFIELD.<code>. Простое значение поля записывается как основное значение без подполей.

json - JSON-массив записей. Каждый элемент массива передается в SetContentA() как готовое массивное представление записи.

csv - текстовый файл, где каждая строка является отдельной записью, а значения разделены точкой с запятой. Значения строки записываются в поля с номерами 1, 2, 3 и далее по порядку.

3. Настройка загрузки

Перед запуском проверьте:

Операция может массово создавать или изменять записи. Перед подключением регулярного запуска проверьте импорт на тестовом файле и убедитесь, что FST формирует нужные поля целевой базы.