НАЧАЛО >> Синхронизация записей >> Импорт записей из файла📄 Скачать в DOCX
Syncer/ImportFromFile - встроенная функция модуля Syncer для загрузки записей из подготовленного файла в выбранную базу данных. Функция разбирает файл, создает записи, при необходимости применяет FST и сохраняет результат через провайдер базы.
Используйте этот вариант, когда интеграционный сценарий уже нашел файл во входной папке и может передать функции путь к файлу и параметры разбора. Стандартный импорт из каталога в Syncer/Sync использует другой контракт парсера: функция из полей inParserModule и inParserFunction получает содержимое файла, а не путь к нему.
Функция вызывается с тремя аргументами:
$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. Если файл пустой или не открывается, функция возвращает текст ошибки. Вызывающий сценарий должен проверить этот массив перед удалением или архивированием исходного файла.
iso - файл в ISO/MARC-представлении. Функция читает длину записи из первых пяти байтов, передает запись в SetFromMarc() с заданной кодировкой и FST, затем сохраняет подготовленную запись.
text - текстовый экспорт ИРБИС. Записи разделяются строкой *****, разбираются через ParseIrbisTxtExpRec(), затем при заполненном fstName дополнительно обрабатываются через FST.
xml - XML-файл со списком записей. Внутри записи ожидаются элементы FIELD.<tag>; подполя читаются из вложенных элементов SUBFIELD.<code>. Простое значение поля записывается как основное значение без подполей.
json - JSON-массив записей. Каждый элемент массива передается в SetContentA() как готовое массивное представление записи.
csv - текстовый файл, где каждая строка является отдельной записью, а значения разделены точкой с запятой. Значения строки записываются в поля с номерами 1, 2, 3 и далее по порядку.
Перед запуском проверьте:
dbName существует и доступна для записи;codePage соответствует фактической кодировке файла;fstName указывает на FST целевой БД, если записи нужно преобразовать перед сохранением;container соответствует реальному формату файла;Syncer/ImportFromFile.Операция может массово создавать или изменять записи. Перед подключением регулярного запуска проверьте импорт на тестовом файле и убедитесь, что FST формирует нужные поля целевой базы.