Навигация:  АДМИНИСТРИРОВАНИЕ МИС МЕДИАЛОГ > ВСПОМОГАТЕЛЬНЫЕ УТИЛИТЫ > УТИЛИТА GUASERVICE > Настройка конфигурации обновлений > Настройка обновления справочников >

Обновление из файлов формата CSV и других структурированных текстовых файлов

Предыдущая страницаВернуться в начало главыСледующая страница

Для обновления справочников из CSV файлов (и других структурированных текстовых файлов) рекомендуется использовать алгоритм обновления TXMLAlgorithm. Для этого необходимо на уровне SQL-скрипта, формирующего результирующую выборку, предварительно преобразовать импортируемый файл к формату XML, а затем настраивать обновление в соответствии с настройкой алгоритма TXMLAlgorithm.

Например, для преобразования CSV-файла к XML-документу:

-- Заносим в переменную содержимое CSV-документа

SET @XML_TEXT = :XML_TEXT;

 

-- Разделяем столбцы CSV-файла по XML-тегам с названием el

-- В данном примере для разделения столбцов в CSV-файле используется символ ";"

SET @XML_TEXT = REPLACE(@XML_TEXT, cast(';' as varchar(max)), cast('</el><el>' as varchar(max)));

 

-- Разделяем строки CSV-файла по тегам с названием rec

-- В данном примере для разделения строк в CSV-файле используется символ новой строки: char(13)

-- Все строки файла помещаем в общий контейнер root

SET @XML_TEXT = cast('<root><rec><el>' as varchar(max)) + REPLACE(@XML_TEXT, CAST(char(13) as varchar(max)), cast('</el></rec><rec><el>' as varchar(max))) + cast('</el></rec></root>' as varchar(max))

 

-- Указываем декларацию XML-документа с указанием корректной кодировки

-- Без указания XML-декларации сервер считает, что обрабатывается документ в кодировке UTF-8. Если при этом в тексте документа имеются кириллические символы, то парсер SQL сообщит о некорректной структуре XML-документа и завершит выполнение ошибкой.

-- Поэтому рекомендуется задавать кодировку обрабатываемого документа явно

SET @XML_TEXT = cast('<?xml version="1.0" encoding="windows-1251"?>' as varchar(max)) + REPLACE(@XML_TEXT, cast('"' as varchar(max)), cast('&#34;' as varchar(max)));

 

-- В дальнейшем для обработки получившегося XML-документа используется парсинг посредством OPENXML

-- Для обращения к тегам el необходимо использовать маску "el[N]", где N - порядковый номер столбца (нумерация с единицы) в схеме WITH