Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли выгрузить из sql server XML файл размером более 2 Гб / 19 сообщений из 19, страница 1 из 1
09.01.2018, 16:28
    #39581156
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
... и какие при этом есть подводные камни?

По некоторым прикидкам, на некоторых базах, которые сейчас используются в нашей организации, выгружаемые для загрузки в хранилище данные перевалят за 2 Гб в виде хмл.

Есть ли какие то подводные камни в выгрузке таких данных?
Беглое гугление показало, что все озабочены либо загрузкой таких данных (с этим нет никаких проблем, т.к. всё грузится через xml bulk load), либо сохранением таких файлов в blob полях (чего тоже не предполагается).

Речь о выгрузки данных, сформированных запросами типа:
Код: sql
1.
 select * from vReport for xml raw


и экспортом их через bcp:
bcp "EXEC [dbo].[GET_FIN_PLAN]" queryout "C:\tmp\plan.xml" -S SERVERNAME -U USERNAME -P PASSWORD -w -r
(соответственно, в хранимке запрос, типа того, который показан выше, возможно более сложный, но бывает и такой, с учетом того, что vReport - сильнонавороченная view).

Либо экспорт производится через самодельное c# приложение, но которое тоже вызывает EXEC [dbo].[GET_что-то-там] , возвращающее единственное поле с хмлем.

Мне кажется, что всё должно посыпаться.
Пожалуйста, кто с таким сталкивался, подскажите, какие затыки ждут?
...
Рейтинг: 0 / 0
09.01.2018, 16:36
    #39581165
WarAnt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
uaggster,

а что мешает попробовать?

есть сомнения что через xml raw можно вытащить больше 2 гигов,
как альтернативный вариант можно попробовать старый добрый EXPLICIT
...
Рейтинг: 0 / 0
09.01.2018, 16:43
    #39581171
Amiri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
можно, но не более.
...
Рейтинг: 0 / 0
09.01.2018, 17:08
    #39581180
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
WarAntесть сомнения что через xml raw можно вытащить больше 2 гигов,Это же будет колонка типа XML, а её размер ограничен 2^31-1. Как я понимаю.
...
Рейтинг: 0 / 0
09.01.2018, 17:10
    #39581181
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
uaggsterПожалуйста, кто с таким сталкивался, подскажите, какие затыки ждут?
Я сталкивался. Ждут вот такие затыки:
Код: plaintext
1.
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 11.0" 
Hresult: 0x80040E14  Description: "Attempting to grow LOB beyond maximum allowed size of 2,147,483,647 bytes.".

И тут не помогут ни самописные скрипты, ни SSIS-пакеты, ни внешние программы, т.к. все они будут пытаться получить xml одним куском. Выход - только bcp, т.к. он выгружает порциями.
...
Рейтинг: 0 / 0
09.01.2018, 17:56
    #39581214
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
Сон Веры ПавловныВыход - только bcp, т.к. он выгружает порциями.Насколько я знаю, не бывает специального "выгружателя" bcp, он точно так же делает чтение из рекордсета.
Т.е. собственно "bulk"-операции определены как класс только для вставки данных.
...
Рейтинг: 0 / 0
09.01.2018, 18:07
    #39581226
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
Я такое через SSIS делаю

Создаем подключение к SQL
Создаем подключение к XML - plain-file
добавляем колонку xml типа поток текста в юникоде DT_NTEXT

1. Задача потока данных Head
Источник - SQL:
SELECT [xml] = CONVERT( XML, NULL )
Назначение - XML:
метка перезаписать данные
заголовок: <root>

2. Задача потока данных Body
Источник - SQL:
SELECT [xml] = ... FROM ...
Назначение - XML:
привязать xml <-> xml

3. Задача потока данных Tail
Источник - SQL:
SELECT [xml] = CONVERT( XML, NULL )
Назначение - XML:
заголовок: </root>

Запускаем, радуемся жизни, если сможем открыть файл размером более 2Гб.
...
Рейтинг: 0 / 0
09.01.2018, 19:57
    #39581278
WarAnt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
alexeyvgWarAntесть сомнения что через xml raw можно вытащить больше 2 гигов,Это же будет колонка типа XML, а её размер ограничен 2^31-1. Как я понимаю.

вот потому и сомнения что это возможно, а как раз explicit такой проблемой не обладает, так как выгружает поток в виде строк по 2 кб длиной
...
Рейтинг: 0 / 0
09.01.2018, 20:23
    #39581292
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
WarAntalexeyvgпропущено...
Это же будет колонка типа XML, а её размер ограничен 2^31-1. Как я понимаю.

вот потому и сомнения что это возможно, а как раз explicit такой проблемой не обладает, так как выгружает поток в виде строк по 2 кб длинойАга, понятно, спасибо вам и Сон Веры Павловны, Руслан Дамирович

Но тогда такое поле > 2ГБ можно и из клиента получить? Обычный клиент ведь использует (может использовать) те же методы, что и bcp или SSIS?
Руслан ДамировичЗапускаем, радуемся жизни, если сможем открыть файл размером более 2Гб.Ну, его же не надо открывать в редакторе и читать :-) Он для импорта куда то, это всё решаемо.
...
Рейтинг: 0 / 0
09.01.2018, 21:46
    #39581320
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
WarAntкак раз explicit такой проблемой не обладает, так как выгружает поток в виде строк по 2 кб длинойfor xml explicit генерирует набор, состоящий из одного столбца типа ntext (или xml, если указано type). Т.е. в этом плане ничем не отличается от raw, auto и path.
...
Рейтинг: 0 / 0
10.01.2018, 09:19
    #39581474
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
Коллеги, спасибо.
Сейчас попробую на тесте, отпишусь.

Кстати, попутный вопрос: в filetable тоже не получится сохранить файл, размером более 2 Гб?
...
Рейтинг: 0 / 0
10.01.2018, 10:32
    #39581532
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
А чем не подошел CSV ??? Он намного быстрее и компактнее.
Зачем эти монстры, состоящие на 50-70% из тегов ?
...
Рейтинг: 0 / 0
10.01.2018, 10:51
    #39581544
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
LSVА чем не подошел CSV ??? Он намного быстрее и компактнее.
Зачем эти монстры, состоящие на 50-70% из тегов ?
Там одним xml-ем выгружается весь набор данных, который, для некоторых систем включает по десятку таблиц, а то и больше.
С производительностью именно загрузки там особых проблем нет. Через SQLXMLBulkLoad всё вполне себе резво грузится.

Схема, в общем, такая:
Рабочие системы выгружают данные в хмли, или целиком, или инкрементально, потом их, соответствующий каждому виду данных модуль - грузит в промежуточную базу, а оттуда - апдейтится хранилище.
Разработчики уверяют, что так удобнее поддерживать и вносить изменения.
...
Рейтинг: 0 / 0
10.01.2018, 11:30
    #39581592
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
LSVА чем не подошел CSV ??? Он намного быстрее и компактнее.
Зачем эти монстры, состоящие на 50-70% из тегов ?
XML и прочие обертки толерантны к содержимому за счет сочетаний <tag></tag>. Хотя спорное утверждение.
Но я согласен с вами - XML при таких объемах информации не самый лучший вариант.
...
Рейтинг: 0 / 0
10.01.2018, 12:01
    #39581628
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
uaggsterРазработчики уверяют, что так удобнее поддерживать и вносить изменения.Так пусть они и занимаются проблемами больших xml. Сегодня 2Гб, завтра 10.
...
Рейтинг: 0 / 0
10.01.2018, 12:05
    #39581632
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
uaggsterСхема, в общем, такая:
Рабочие системы выгружают данные в хмли, или целиком, или инкрементально, потом их, соответствующий каждому виду данных модуль - грузит в промежуточную базу, а оттуда - апдейтится хранилище.
Возникает вопрос, а зачем нужно промежуточное звено в виде XML? - грузите сразу в промежуточную базу.
Хотя, если
uaggsterРазработчики уверяют, что так удобнее поддерживать и вносить изменения.
То вас уже ничто не спасет... выражаю вам свое искреннее сочувствие.
...
Рейтинг: 0 / 0
10.01.2018, 13:03
    #39581679
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
LSVuaggsterРазработчики уверяют, что так удобнее поддерживать и вносить изменения.Так пусть они и занимаются проблемами больших xml. Сегодня 2Гб, завтра 10.
Потому что часть систем - унаследованно, и разработчиков у них нет.
Как сговнякано, так и живет.
Временами некие привлеченные специалисты меняют набор выгружаемых данных, просто правя запрос, который формирует данные в хмл, и всё.
...
Рейтинг: 0 / 0
10.01.2018, 13:08
    #39581683
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
Руслан ДамировичuaggsterСхема, в общем, такая:
Рабочие системы выгружают данные в хмли, или целиком, или инкрементально, потом их, соответствующий каждому виду данных модуль - грузит в промежуточную базу, а оттуда - апдейтится хранилище.
Возникает вопрос, а зачем нужно промежуточное звено в виде XML? - грузите сразу в промежуточную базу.
Хотя, если
uaggsterРазработчики уверяют, что так удобнее поддерживать и вносить изменения.
То вас уже ничто не спасет... выражаю вам свое искреннее сочувствие.
Я, возможно, неправильно выразился.
Исходные системы - они разнородные, от разных разработчиков, вплоть до того, что в разных филиалах софт, выполняющий разные задачи - разный, причем в части филиалов - даже разработчики умерли (и, к сожалению - это не фигура речи).
Планово со скрипом заменяется и т.д.
А вот целевая система, где, с некоторыми потерями агрегируются данные - она одна. У них разработчики - совершенно конкретные, и у них проблем нету. Они любые файлы могут загрузить, лишь бы ФЛК проходило. Хоть 100 Гб, хоть 200.
Совсем никаких проблем.
...
Рейтинг: 0 / 0
10.01.2018, 13:45
    #39581707
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли выгрузить из sql server XML файл размером более 2 Гб
Руслан ДамировичuaggsterСхема, в общем, такая:
Рабочие системы выгружают данные в хмли, или целиком, или инкрементально, потом их, соответствующий каждому виду данных модуль - грузит в промежуточную базу, а оттуда - апдейтится хранилище.
Возникает вопрос, а зачем нужно промежуточное звено в виде XML? - грузите сразу в промежуточную базу.
Хотя, если
uaggsterРазработчики уверяют, что так удобнее поддерживать и вносить изменения.
То вас уже ничто не спасет... выражаю вам свое искреннее сочувствие.Что вам не нравится то?
XML - вполне нормальный стандарт, всеми понимаемый, можно определить формат данных, документов, транзакций и т.п.
Чем лучше, если бы сказали - вот вам "промежуточная база" в постгрессе, лейте туда. А для ещё одной системы нужно выгружать то же самое в промежуточную базу на оракле. И структуры там меняются.

А с XML каждый выгружает в стабильно определённый XML, и пусть делают с ним всё что хотят.

Понятно, что рецепт не универсальный, но вполне рабочий.

Мы вот раньше получали данные из Oracle, Sybase и CSV нескольких форматов, из систем разных вендоров.

А потом постепенно перешли на импорт из формата XML, в определённом отраслевом формате, который, само собой, все эти вендоры поддерживают, и стало намного легче. И да, файлы бывают большие, но нам всё равно, мы загружаем, а не выгружаем :-)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли выгрузить из sql server XML файл размером более 2 Гб / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]