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

Откуда:
Сообщений: 960
Собственно сабж.

MSSQLSERVER 2008
Есть несколько больших xml файлов, ~50Мб размером, которые нужно положить в хмл поле некой таблицы.
Есть ли для этого подходящий инструмент?

MSDNовский пример:
INSERT INTO T(XmlCol)
SELECT * FROM OPENROWSET(
   BULK 'c:\SampleFolder\SampleData3.txt',
   SINGLE_BLOB) AS x;

не подходит, т.к. файл должен лежать на сервере.

Файлстрим шару сделать, и помещать файл в filetable, а потом оттуда втыкать в поле таблицы - тоже не вариант. Функционал filetable, афаик в 2012 только появился.

Есть инструмент какой-нибудь?

Не распарсить xml, а именно поместить большой файл в поле таблицы с клиента.

Код на vb.net или c# я в состоянии написать. Но может что-то штатное есть? bcp как нибудь приспособить или ssis.
Не могу найти примера. Всё утыкается в итоге в ссылку https://msdn.microsoft.com/ru-ru/library/ms191184(v=sql.120).aspx , см. выше.

Хелп, а?
26 янв 16, 15:58    [18731141]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить xml файл в xml поле таблицы, если файл лежит на клиенте?  [new]
Glory
Member

Откуда:
Сообщений: 104751
uaggster
Есть инструмент какой-нибудь?

А вы как в другие поля других таблиц данные добавляете ?
Которые "лежат на клиенте" ?
26 янв 16, 16:00    [18731158]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить xml файл в xml поле таблицы, если файл лежит на клиенте?  [new]
Glory
Member

Откуда:
Сообщений: 104751
uaggster
Не могу найти примера. Всё утыкается в итоге в ссылку https://msdn.microsoft.com/ru-ru/library/ms191184(v=sql.120).aspx , см. выше.

Хелп, а?

Выгрузите через bcp нужное поле нужной записи нужной таблицы
Получи формат-файл для этого.
Используй измененный формат-файл для другой таблицы
26 янв 16, 16:16    [18731276]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить xml файл в xml поле таблицы, если файл лежит на клиенте?  [new]
uaggster
Member

Откуда:
Сообщений: 960
Glory
uaggster
Есть инструмент какой-нибудь?

А вы как в другие поля других таблиц данные добавляете ?
Которые "лежат на клиенте" ?

Через клиентское приложение или через bcp. Ну или SSIS. Или подцепившись через ODBC из Access, например.
Или, если нужно добавить несколько записей - просто написав insert в SSMS.

Такая проблема возникает с nvarchar(max) или varbinary(max) (но это редко надо). И вот xml.
26 янв 16, 16:30    [18731383]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить xml файл в xml поле таблицы, если файл лежит на клиенте?  [new]
Glory
Member

Откуда:
Сообщений: 104751
uaggster
Через клиентское приложение или через bcp.Ну или SSIS. Или подцепившись через ODBC из Access, например.
Или, если нужно добавить несколько записей - просто написав insert в SSMS.

Ну так я вас удивлю - в поле типа xml данные добавляются точно также

uaggster
Такая проблема возникает с nvarchar(max) или varbinary(max) (но это редко надо). И вот xml.

Нет никакой проблемы с этими типами данных
26 янв 16, 16:37    [18731428]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить xml файл в xml поле таблицы, если файл лежит на клиенте?  [new]
uaggster
Member

Откуда:
Сообщений: 960
Glory
uaggster
Через клиентское приложение или через bcp.Ну или SSIS. Или подцепившись через ODBC из Access, например.
Или, если нужно добавить несколько записей - просто написав insert в SSMS.

Ну так я вас удивлю - в поле типа xml данные добавляются точно также

uaggster
Такая проблема возникает с nvarchar(max) или varbinary(max) (но это редко надо). И вот xml.

Нет никакой проблемы с этими типами данных

Тогда не могли бы Вы по шагам рассказать, как поместить файл размером 50Мб в поле таблицы с помощью подручных средств?
У меня - не получается.
Именно об этом я и написал.

Итак:
Есть таблица:
Create table a (n int identity(1,1) primary key clustered, x xml)

Есть большой файл xml, такой, что я не могу вставить тело этого файла в varchar константу в SSMS в запросе с insert.
Что дальше то? Писать приложение на c#?
26 янв 16, 16:45    [18731486]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить xml файл в xml поле таблицы, если файл лежит на клиенте?  [new]
Glory
Member

Откуда:
Сообщений: 104751
uaggster
Тогда не могли бы Вы по шагам рассказать, как поместить файл размером 50Мб в поле таблицы с помощью подручных средств?

insert into mytable (f1) values N'здесь строка хоть на 50мб хоть на 100мб хоть на 2гб....'
26 янв 16, 16:56    [18731607]     Ответить | Цитировать Сообщить модератору
 Re: Как вставить xml файл в xml поле таблицы, если файл лежит на клиенте?  [new]
Glory
Member

Откуда:
Сообщений: 104751
uaggster
Тогда не могли бы Вы по шагам рассказать, как поместить файл размером 50Мб в поле таблицы с помощью подручных средств?

И между прочим в якобы прочитанной вами ссылке на документацию есть пример

Г.Указание признаков конца поля явным образом при помощи файла форматирования
В следующем примере демонстрируется, как выполнить массовый импорт XML-документа Xmltable.dat.
26 янв 16, 17:12    [18731729]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить