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

Откуда:
Сообщений: 114
Добрый день.
Требуется загрузить XML в SQL SERVER 2012

Выполняю
select * INTO Temp FROM OPENROWSET (BULK 'c:\MVK\Zayavki_xml\zayavki130917154157.xml' , SINGLE_BLOB) AS XMLDATA


результат:

BulkColumn
0x3C3F786D6C2076657273696F6E3D22312E3022206....

Что требуется что бы данные правильно отображались?
4 окт 13, 12:03    [14922905]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML  [new]
Glory
Member

Откуда:
Сообщений: 104760
SINGLE_BLOB - вы получили то, что заказали. Т.е. двоичные данные
4 окт 13, 12:05    [14922920]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML  [new]
bamper78
Member

Откуда:
Сообщений: 114
Glory,
Понятно.

А как залить данные в читабельном формате ?
4 окт 13, 12:10    [14922967]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML  [new]
Glory
Member

Откуда:
Сообщений: 104760
bamper78
А как залить данные в читабельном формате ?

Хммм
Прочитать про все параметры OPENROWSET (BULK ? И выбрать нужный ?
4 окт 13, 12:12    [14922985]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML  [new]
bamper78
Member

Откуда:
Сообщений: 114
Glory,

Я правильно понял, что нужно использовать файл форматирования для привязки данных XML к столбцам таблицы.

можно пример такого файла ?
4 окт 13, 12:56    [14923394]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML  [new]
Glory
Member

Откуда:
Сообщений: 104760
bamper78
Я правильно понял, что нужно использовать файл форматирования для привязки данных XML к столбцам таблицы.

Хелп надо открыть. И прочитать про SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB
4 окт 13, 12:57    [14923409]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML  [new]
bamper78
Member

Откуда:
Сообщений: 114
Glory,

Это я понял с SINGLE_CLOB данные выводятся в одну строку, нужно в табличном виде представить
4 окт 13, 13:08    [14923520]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML  [new]
Glory
Member

Откуда:
Сообщений: 104760
bamper78
Это я понял с SINGLE_CLOB данные выводятся в одну строку, нужно в табличном виде представить

Т.е. вы хотите, чтобы OPENROWSET вам еще и распарсил файл ?
4 окт 13, 13:10    [14923549]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML  [new]
Glory
Member

Откуда:
Сообщений: 104760
И причем тут тогда XML ?
4 окт 13, 13:11    [14923555]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML  [new]
bamper78
Member

Откуда:
Сообщений: 114
Glory,

интересует каким методом это можно сделать
4 окт 13, 13:13    [14923582]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML  [new]
Glory
Member

Откуда:
Сообщений: 104760
bamper78
интересует каким методом это можно сделать

Что это ?
Ваша тема называется "Импорт XML"
Файл вы импортировали. Чего еще не хватает ?
4 окт 13, 13:14    [14923597]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML  [new]
bamper78
Member

Откуда:
Сообщений: 114
Glory,

Имеется XML со структурой:

<?xml version="1.0" encoding="windows-1251"?>
<requests>
  <request>
    <id>201152199</id>
    <nomzv>49672</nomzv>
    <status>1</status>
    <podrname>РЭВС 9</podrname>
    <showtype>1</showtype>
    <control></control>
    <zvdate>17.09.2013</zvdate>
    <tipzv>2200</tipzv>
    <tipzv1>2201</tipzv1>
    <cstr1>2441</cstr1>
    <dom11>3</dom11>
    <dom12></dom12>
    <korp1></korp1>
    <str1></str1>
    <vlad1></vlad1>
    <address1>ПАРКОВАЯ УЛ. № 3</address1>
    <cstr2>0</cstr2>
    <dom21></dom21>
    <dom22></dom22>
    <korp2></korp2>
    <str2></str2>
    <vlad2></vlad2>
    <address2> </address2>
  </request>...


нужно эти данные импортировать в созданную таблицу, я так понял что нужно сформировать файл схему для XML
4 окт 13, 13:19    [14923646]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML  [new]
Glory
Member

Откуда:
Сообщений: 104760
bamper78
я так понял что нужно сформировать файл схему для XML

Надо учить OPENXML и методы xml datatype
4 окт 13, 13:23    [14923681]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
begin tran;
select cast(v as xml) as xml_field into #t from openrowset(bulk 'c:\MVK\Zayavki_xml\zayavki130917154157.xml', single_blob) t(v);
select * from #t;
rollback;
4 окт 13, 14:03    [14924077]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML  [new]
bamper78
Member

Откуда:
Сообщений: 114
Glory,

DECLARE @hdoc integer
DECLARE @x XML
SET @x = (select * from OpenRowset(BULK 'c:\MVK\Zayavki_xml\zayavki130917154157.xml', SINGLE_BLOB) Rel(x)) 
SELECT @x

EXEC sp_xml_preparedocument @hdoc OUTPUT, @x
SELECT * FROM OPENXML (@hdoc,  '/request/id/nomzv', 2) 
WITH (id INT 'id',
      nomzv INT 'nomzv')
EXEC sp_xml_removedocument @hdoc



результат ничего не выводит, подскажите где ошибка ?
4 окт 13, 14:09    [14924121]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML  [new]
Glory
Member

Откуда:
Сообщений: 104760
SELECT * FROM OPENXML (@hdoc, '/requests/request', 2)
4 окт 13, 15:00    [14924457]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML  [new]
bamper78
Member

Откуда:
Сообщений: 114
Glory,

Спасибо, я уже решил.

Все получилось.

Решение:

DECLARE @hdoc integer
DECLARE @x XML
SET @x = (select * from OpenRowset(BULK 'c:\MVK\Zayavki_xml\zayavki130917154157.xml', SINGLE_BLOB) Rel(x)) 
SELECT @x

EXEC sp_xml_preparedocument @hdoc OUTPUT, @x
SELECT * INTO ZAYAV_XML FROM OPENXML (@hdoc,  '/requests/request', 2) 
WITH ( [id] INT 'id',
          [nomzv] INT 'nomzv',
	  [status] INT 'status',
	  [podrname] NVARCHAR(20) 'podrname',
	  [showtype] INT 'showtype',
	  [control] NVARCHAR (20)'control',
	  [zvdate] DATE 'zvdate',
          [tipzv] INT 'tipzv',
          [tipzv1] INT 'tipzv1',
	  [cstr1] INT 'cstr1',
	  [dom11] NVARCHAR (20) 'dom11',
	  [dom12] NVARCHAR (20) 'dom12',
	  [korp1] NVARCHAR (20) 'korp1',
	  [str1] NVARCHAR (20) 'str1',
          [vlad1] INT 'vlad1',
	  [address1] NVARCHAR (20) 'address1',
	  [cstr2] INT 'cstr2',
	  [dom21] NVARCHAR (20) 'dom21',
	  [dom22] NVARCHAR (20) 'dom22',
	  [korp2] NVARCHAR (20) 'korp2',
	  [str2] NVARCHAR (20) 'str2',
	  [vlad2] INT 'vlad2',
	  [address2] NVARCHAR (20) 'address2'
	   )
EXEC sp_xml_removedocument @hdoc
4 окт 13, 15:19    [14924606]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить