Это старая версия Справка/Разработчик/Расширения/AdvOntologyCSV за 2014-04-09 17:22:25..
AdvOntologyCSV
Расширение AdvOntologyCSV позволяет экспортировать и импортировать данные из csv-файлов в таблицы AdvOntology, а также синхронизировать их между собой.
При передаче данных в любую сторону могут быть определены процедуры преобразования.
Ведется журнал выполненных операций.
При передаче данных в любую сторону могут быть определены процедуры преобразования.
Ведется журнал выполненных операций.
Стратегии обмена данными
Расширение поддерживает четыре стратегии обмена данными:- importOne – используется, если в таблицу AdvOntology загружаются данные из одного csv-файла. При повторном импорте таблица AdvOntology переинсталлируется, id обнуляется.
- importSum – используется, если в таблицу AdvOntology импортируются данные из многих csv-файлов (импорт можно отменить). При повторном импорте данные добавляются в таблицу за новыми id. Все csv-файлы, предназначенные для импорта в одну таблицу AdvOntology, хранятся в одноименной папке в директории _importSum.
- export TODO – используется для выгрузки данных из таблиц AdvOntology
- sync TODO – используется для полной синхронизации таблицы AdvOntology с единственным csv-файлом. Необходимо указать поле csv-файла, которое будет выполнять функцию ключа.
Пример
Инсталляция
Шаг 1
После инсталляции в директории sites/[mysite.ru]/data/AdvOntologyCSV автоматически создаются папки:- _export хранилище csv-файлов, экспортированных из таблиц AdvOntology
- _importOne хранилище csv-файлов, предназначенных для импорта с перезаписью
- _importSum хранилище csv-файлов, предназначенные для импорта с добавлением
- myType1
- myType2
- _sync хранилище csv-файлов, синхронизированных с таблицами AdvOntology
- phpProcessor папка с php-процедурами преобразования данных
- config.php параметры обмена данными
Шаг 2
Опишите параметры обмена данными в файле config.php.Опишите пользовательские процедуры преобразования данных и сохраните их в папке phpProcessor.
Шаг 3
Разместите на странице /Администрирование/Сервисы/AdvOntologyCSV экшены:- adminuploadcsv для загрузки csv-файлов
- adminfilescsv для администрирования и импорта загруженных csv-файлов
{{adminuploadcsv oper="importOne"}}
{{adminfilescsv oper="importOne"}}
{{adminuploadcsv oper="importSum" type="DemoPerson"}}
{{adminfilescsv oper="importSum" type="DemoPerson"}}
Шаг 4
С помощью экшенов adminuploadcsv и adminfilescsv загружайте и импортируйте csv-файлы.Журнал выполненных операций располагается на странице /Администрирование/Сервисы/AdvOntologyCSV/Log.
config.php
Структура конфигуратора обмена данными и синтаксис стандартных процедур преобразования данных видны из примера:
<?php
$this->config = array (
"importOne" => array (
array("file1.csv", "Type1", array("header" => 0), array( // header - сколько строк пропустить
"field1" => 0, // is_int: значение из столбца 0
"field2" => "value", // is_string: текстовая константа
"field3" => "phpProcessor", // о процессоре см. ниже
"field4" => array("concat", "[2], д.[3], кв.[4]"), // склеивание столбцов 2,3 и 4
"field5" => array("substr", 3, $start, $length), // подстрока из столбца 3
"field6" => array("getId", 4, "NewType", "NewField")
// подстановка id, где значение в столбце 4 = NewType.NewField
) )
),
"importSum" => array (
array("", "Type2", array("header" => 0), array( ) )
// в importSum имя csv-файла не указывается
),
"export" => array (
),
"sync" => array (
)
);
?>
phpProcessor
В папке phpProcessor хранятся пользовательские процедуры преобразования данных. Для каждого поля необходимо создать отдельный php-файл с именем имя_типа.имя_поля.php.PHP процессор получает на вход $data – нумерованный массив со значениями текущей строки csv-файла, и должен установить переменную $res – значение, которое будет записано в поле таблицы.
Если необходим доступ к сервисам, то он выполняется в контексте AdvOntologyCSV.
Пример файла DemoPerson.data.php Преобразует первое поле вида «Иванов Иван Иванович» в «Иванов И.И.»
<?php
$arr = explode(" ", $data[0]);
$res = $arr[0]." ".substr($arr[1], 0, 1).".".substr($arr[0], 0, 1);
?>
actions
adminuploadcsv - загрузка CSV-файлов (для администратора)
Выводится форма загрузки csv-файлов в зависимости от предполагаемого использования (импорт/синхронизация).
{{adminuploadcsv oper="importOne|importSum|sync" [type="SciArticle"] }}
Name | default | Description |
---|---|---|
oper | Предполагаемое использование если ="importOne" или ="sync", при коллизии имен файл будет перезаписан поверх существующего если ="importSum", при коллизии имен загрузка блокируется, предлагается переименовать файл или удалить существующий. | |
type | Имя таблицы AdvOntology (только для oper="importSum") |
useruploadcsv - загрузка CSV-файлов (для пользователя)
Выводится форма загрузки csv-файлов для зарегистрированных пользователей. После загрузки файлам автоматически присваивается имя имя_пользователя гггг-мм-дд чч:мм:сс.ext. Три параметра определяются в теле файла:
$oper = 'userfiles'; // имя папки в директории data/AdvOntologyCSV/, куда будут загружаться файлы
$extensions = array('csv'); // допустимые расширения
$maxsize = 2000; // максимальный размер загружаемого файла в Кб
adminfilescsv- список CSV-файлов
Выводится список csv-файлов и панель действий для каждого из них: «импортировать», «отменить», «удалить файл». Действие «импортировать» доступно при выполнении трех условий: 1) параметры импорта определены в файле config.php; 2) создан целевой тип AdvOntology; 3) загружен cav-файл.
{{adminuploadcsv oper="importOne|importSum|sync" [type="SciArticle"]}}
Name | default | Description |
---|---|---|
oper | Директория с файлами в соответствии с предполагаемым использованием. | |
type | Имя таблицы AdvOntology (только для oper="importSum"). |