:: Не фоксом единым
Добавление в таблицы SQL из XML
tatanat
Автор

Сообщений: 15
Дата регистрации: 18.08.2011
Здравствуйте!
У меня такая проблема. Надо из XML файла, содердащего вложенные XML, переписать данные в таблицы SQL.
XML:
Данные файла XML нужно записать в таблицы DOP_PAC, OMS и LGOT

<?xml version = "1.0" encoding="Windows-1251" standalone="yes"?>
<ZGLV>
<UROV1>
<NZAP>1</NZAP>
<UROV2>
<IDZAP>1</IDZAP>
<UROV3>
<IDPAC>11</IDPAC>
<IDPACNAME>pl1</IDPACNAME>
</UROV3>
<UROV3>
<IDPAC>12</IDPAC>
<IDPACNAME>pl2</IDPACNAME>
</UROV3>
</UROV2>
<NZAP>2</NZAP>
<UROV2>
<IDZAP>11</IDZAP>
<UROV3>
<IDPAC>21</IDPAC>
<IDPACNAME>p21</IDPACNAME>
</UROV3>
<UROV3>
<IDPAC>22</IDPAC>
<IDPACNAME>p22</IDPACNAME>
</UROV3>
</UROV2>
</UROV1>
</ZGLV>

В SQL запись в три таблицы:
поля 1 таблицы - NZAP
поля 2 таблицы - NZAP, IDZAP
поля 3 таблицы - NZAP, IDZAP, IDPAC, IDPACNAME

Через OPENXML для 1 и 2 таблицы все выходит.
А вот для третьей не могу вытащить поле NZAP с первого уровня (UROV1). Получаю исключительно NULL.

Если кто-нибудь уже решал такую задачу, пожалуйста, подскажите.
Ratings: 0 negative/0 positive
Re: Добавление в таблицы SQL из XML
tatanat
Автор

Сообщений: 15
Дата регистрации: 18.08.2011
Нашлось решение:
DECLARE @idoc int, @doc varchar(1000);
SET @doc ='
<?xml version = "1.0" encoding="Windows-1251" standalone="yes"?>
<ZGLV>
<UROV1>
<NZAP>1</NZAP>
<UROV2>
<IDZAP>1</IDZAP>
<UROV3>
<IDPAC>11</IDPAC>
<IDPACNAME>pl1</IDPACNAME>
</UROV3>
<UROV3>
<IDPAC>12</IDPAC>
<IDPACNAME>pl2</IDPACNAME>
</UROV3>
</UROV2>
<NZAP>2</NZAP>
<UROV2>
<IDZAP>11</IDZAP>
<UROV3>
<IDPAC>21</IDPAC>
<IDPACNAME>p21</IDPACNAME>
</UROV3>
<UROV3>
<IDPAC>22</IDPAC>
<IDPACNAME>p22</IDPACNAME>
</UROV3>
</UROV2>
</UROV1>
</ZGLV> '

EXEC sp_xml_preparedocument @idoc OUTPUT, @doc;

SELECT *
FROM
OPENXML (@idoc, '/ZGLV/UROV1/UROV2/UROV3', 3)
WITH (
NZAP int '../../NZAP',
IDZAP int '../IDZAP',
IDPAC int 'IDPAC',
IDPACNAME varchar(10) 'IDPACNAME')
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 4 (Гостей: 4)

© 2000-2024 Fox Club 
Яндекс.Метрика