Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 MS SQL Server, TSQL, загрузить из XML-файла сами данные и засунуть их в таблицы  [new]
Бобби
Guest
Добрый вечер!
У меня есть ряд XML-файлов. Нужно автоматически вытащить из них данные (вложенность обычно от 1-го до 4-х уровней) и разложить по таблицам в SQLServer'е.
Если таблиц нету - то создать их. Если в таблице уже есть какие-то данные - просто добавлять строки.

Никак не могу найти подходящее для такой задачи ПО... Вернее одно нашёл, почти как надо, но оно оказалось условно-платное: Advanced XML Converter
Гадина вроде как конвертирует, и с совсем мелкими огрехами - но только половину данных! Может кто-то знает другую похожую программу? Или есть иной способ?
13 мар 18, 18:07    [21253505]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server, TSQL, загрузить из XML-файла сами данные и засунуть их в таблицы  [new]
?
Guest
Бобби,

?
13 мар 18, 19:19    [21253657]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server, TSQL, загрузить из XML-файла сами данные и засунуть их в таблицы  [new]
Бобби
Guest
Поискал я этот "Data Tools", что-то не вижу такого на наших компах, завтра спрошу у того кто знает точно...
13 мар 18, 22:51    [21253947]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server, TSQL, загрузить из XML-файла сами данные и засунуть их в таблицы  [new]
_____aak__
Member

Откуда:
Сообщений: 13
Мы решаем подобное средствами SQL Server. Связка xp_cmdshell (чтобы получить имена файлов в определенном месте) и OPENROWSET.
Что то типа insert into #file_contents(txt) exec('SELECT * FROM OPENROWSET(BULK '''+@main_dir+'\'+@fName+''', SINGLE_CLOB) as a'). Только автоматизация вызова этой процедуры выполняется нашим ПО, но думаю не составит труда запустить через job.
14 мар 18, 14:43    [21255618]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server, TSQL, загрузить из XML-файла сами данные и засунуть их в таблицы  [new]
Redmond
Member

Откуда:
Сообщений: 17
DECLARE @XML XML;
SET @XML = (SELECT * FROM OPENROWSET(BULK 'C:\...\file.xml', SINGLE_CLOB) AS xmlData);
SELECT
	[XML].value('@id', 'INT') AS ID,
	[XML].value('@name', 'NVARCHAR (100)') AS Name,
	[XML].value('@type', 'NVARCHAR (25)') AS Type,
	[XML].value('*[1]', 'NVARCHAR (500)') AS FirstChild,
	[XML].value('@*[5]', 'NVARCHAR (500)') AS FifthAttribute
FROM
	@XML.nodes('/ObjectList/Object') xmlData([XML]);
25 мар 18, 02:42    [21283646]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить