Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с загрузкой из XML-файла  [new]
mikka sikorsky
Member

Откуда:
Сообщений: 53
Приветствую!
Возникла проблема следующего характера: имеется XML-файл, данные их него загружаются в таблицу.
Однако в последней версии XML-файла в одном из тегов появились данные, разделенные запятой.
При загрузке из этих данных должны формироваться 2 записи.
Т.е. если в этом поле нет запятых, то загрузка идет "линейная": создается одна запись и из каждого тега данные кладутся в соответствующее поле, а если в одном из полей есть запятая, то должны появляться 2 записи в таблице, из тега с запятой данные до запятой кладутся в первую запись, данные после запятой - во вторую запись. Надеюсь, понятно объяснил.
Вот, ломаю голову, как это реализовать на MS SQL. Может быть, у кого-то есть решение? Прошу поделиться соображением, а, может, и кодом, если есть. Заранее благодарен за конструктивные советы. Спасибо
17 окт 19, 14:29    [21996573]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с загрузкой из XML-файла  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36972
https://docs.microsoft.com/ru-ru/sql/t-sql/functions/string-split-transact-sql?view=sql-server-ver15
17 окт 19, 14:41    [21996589]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с загрузкой из XML-файла  [new]
Посетитель
Member

Откуда:
Сообщений: 1209
mikka sikorsky
Приветствую!
Возникла проблема следующего характера: имеется XML-файл, данные их него загружаются в таблицу.
Однако в последней версии XML-файла в одном из тегов появились данные, разделенные запятой.
При загрузке из этих данных должны формироваться 2 записи.
Т.е. если в этом поле нет запятых, то загрузка идет "линейная": создается одна запись и из каждого тега данные кладутся в соответствующее поле, а если в одном из полей есть запятая, то должны появляться 2 записи в таблице, из тега с запятой данные до запятой кладутся в первую запись, данные после запятой - во вторую запись. Надеюсь, понятно объяснил.
Вот, ломаю голову, как это реализовать на MS SQL. Может быть, у кого-то есть решение? Прошу поделиться соображением, а, может, и кодом, если есть. Заранее благодарен за конструктивные советы. Спасибо


...
cross apply string_split(ваше_поле_полученное_из_xml,',') 
...
17 окт 19, 14:41    [21996590]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с загрузкой из XML-файла  [new]
mikka sikorsky
Member

Откуда:
Сообщений: 53
Гавриленко Сергей Алексеевич, спасибо большое.
Пока сижу на 14 серваке, а STRING_SPLIT, насколько понимаю, появилась в 19.
Если перейдём на 19, то забегая вперед, для формирования двух записей из одной с одинаковыми значениями в остальных полях надо в запросе использовать CROSS APPLY ?
17 окт 19, 14:49    [21996600]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с загрузкой из XML-файла  [new]
mikka sikorsky
Member

Откуда:
Сообщений: 53
пока писал сообщение, появился новый ответ.
спасибо большое!
17 окт 19, 14:50    [21996601]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить