Follow

API for CSV import 'on demand' [Russian]

Итак, несколько слов о методе, позволяющем ипортировать файлы большого размера, как в таблицу контактов, так и в "кастомные" таблицы.

Пара ссылок
 
Теперь более подробно
В Ofsys есть возможность настройки регулярного автоматического импорта данных.
При настройке такого импорта указываются следующие параметры:
- В какую таблицу импортируем;
- В каком режиме (update+insert, update only, insert only, full replace)
- откуда (здесь указывается FTP сервер и папка на нем)
- маппинг полей 
- расписание импортов (в какие дни и во сколько).

У каждого такого настроенного импорта (Scheduled Import) есть ID (IdScheduledImport).
Внимание: это ID не какого-то конкретного импорта, выполненного, к примеру, сегодня в 6.00 утра, а ID регулярной процедуры.

Новый метод позволяет сделать одну из двух следующих вещей:
1. Внепланово выполнить Scheduled Import с таким-то ID, предварительно положив нужный файл туда, где данный импорт настроен его искать. Имя файла должно быть строго таким, как настроено в импорте.
2. Внепланово Выполнить Scheduled Import с таким-то ID, передав при вызове в явном виде значение Path - путь к целевому файлу (включающий имя файла), который должен находиться в любой папке на том же FTP сервере.

В обоих случаях структура файла должна быть такой, которая предполагается настроенным импортом.
В обоих случаях в ответ будет возвращен так называемый idImport (id конкретного запущенного импорта).
В обоих случаях метод работает асинхронно, т.е., если импорт стартовал, то будет возвращен Success.
Для контроля завершения импорта необходимо использовать метод Imports.Status2 (http://ofsys.com/S/OFC4/Imports.asmx?op=Status2).
 
 
Теперь о структуре файла. 
 
Она может быть фиксированной или динамической.
В первом случае при настройке Scheduled Import мы говорим, что в файле будут такие-то столбцы, которые "мапятся" на такие-то поля целевой таблицы. Столбцы при этом могут называться как угодно.
Во втором случае столбцам даются названия по определенным правилам, что позволяет системе самой произвести маппинг. Этот способ позволяет свободно варьировать состав передаваемых полей.
 
Формат файлов
Здесь оптимальным является только один вариант: 
•  разделитель - запятая, согласно RFC 4180 (http://www.ietf.org/rfc/rfc4180.txt)
•  если в значениях какого-либо поля могут встречаться запятые, значения этого поля должны быть взяты в кавычки (“some,value”). В остальных случаях кавычки не обязательны, но и ошибкой не будут.
•  кавычки в значении поля должны заменяться на двойные кавычки (пример: field 1, field 2 with “”quotes””, field 3)
•  значения полей с типом Date должны быть в формате YYYY.MM.DD.
•  значения полей с типом Datetime должны быть в формате YYYY.MM.DD hh:mm.
•  кодировка: UTF-8 with BOM (именно с "бомом")
•  если CSV большой, то для ускорения загрузки можно сжать в ZIP (именно в ZIP). Каждый файл архивируется отдельно. Внутри архива должен быть один файл, без вложенных директорий.
Успешных импортов!

0 Comments

Please sign in to leave a comment.