Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Подскажите быструю утилиту для XSLT / 10 сообщений из 10, страница 1 из 1
19.09.2012, 12:14
    #37963767
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите быструю утилиту для XSLT
Подскажите, можно ли решить задачу XSL преобразования большого файла.
ОС - Windows Server 2008 R2 x64

Необходимо преобразовать XML файл (нужно для упрощения импорта в MSSQL, файл сложной структуры, а нужно вытянуть не все данные, а небольшое подмножество)

Сделал xsl файлик, всё прекрасно преобразовывает, получается простой результатирующий XML. Использовал для преобразования XML Task в SSIS из MS SQL Server

Проверил на маленьком файлике (60 мб), работает 3 секунды. Запустил на нормальном файле (3 гб) - ждал 20 минут, результата не дождался :-( Процессор не загружен, памяти съело 3.2 гига.

Попробовал утилиту MSXSL.EXE, отработала быстро, результат:
Error occurred while loading document ...
Code: 0x8007000e
Not enough storage is available to complete this operation.

Кто нибуть знает нормальную быструю утилиту, которая не пытается загрузить файл в память и распарсить, а преобразовывает потоком (если такое вообще возможно)?

Зараннее спасибо за помощь!
...
Рейтинг: 0 / 0
19.09.2012, 21:02
    #37964739
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите быструю утилиту для XSLT
Запустил на нормальном файле (3 гб)Тот, кто делает такие xml, — даун, так ему и передайте.
xml не предназначен для таких объемов.

если такое вообще возможноСомневаюсь. Связанные между собой данные могу находиться в разных концах документа, "потоком" их не достанешь.
...
Рейтинг: 0 / 0
19.09.2012, 22:25
    #37964810
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите быструю утилиту для XSLT
alexeyvg,

Saxon.
...
Рейтинг: 0 / 0
20.09.2012, 17:25
    #37966164
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите быструю утилиту для XSLT
AntonariyЗапустил на нормальном файле (3 гб)Тот, кто делает такие xml, — даун, так ему и передайте.
xml не предназначен для таких объемов.Компания Ericsson делает, предоставляет параметры оборудования сотовой сети :-) Наворотили они там сильно...

Насчёт "не предназначен" - не согласен. Нормальный формат для слабоструктурированных данных, я бы свой формат лучше, удобнее не придумал...
Antonariyесли такое вообще возможноСомневаюсь. Связанные между собой данные могу находиться в разных концах документа, "потоком" их не достанешь.Ясно, спасибо :-(

Читал что-то про новую версию XSLT, что то там с потоковой обработкой, но это, как я понимаю, дело будущего...
MasterZivalexeyvg,

Saxon.Спасибо!

Да, уже встретилось это слово в одном месте (например, в http://clubs.ya.ru/xslt/replies.xml?item_no=1587 ), буду смотреть.

Пока нашёл выход - сделал xsd, полностью разбираю файл и импортирую нужные данные без упрощения через XSLT, файл 3 гб парсится и импортится за 2 минуты.
...
Рейтинг: 0 / 0
20.09.2012, 18:41
    #37966283
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите быструю утилиту для XSLT
alexeyvgНасчёт "не предназначен" - не согласен. Нормальный формат для слабоструктурированных данныхНе предназначен для объемов , а не слабой структуры.
...
Рейтинг: 0 / 0
20.09.2012, 19:13
    #37966306
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите быструю утилиту для XSLT
AntonariyalexeyvgНасчёт "не предназначен" - не согласен. Нормальный формат для слабоструктурированных данныхНе предназначен для объемов , а не слабой структуры.Это какое-то неформальное определение :-)
Никогда не слышал про такие требования, ИМХО можно использовать XML для любых объёмов, неважно, мегабайты или петабайты. С точки зрения чистой теории, разумеется.

Вот классический XSLT действительно не очень подходит, так как для преобразования нужно его прочитать и построить модель в памяти.
Хотя это не ограничения на размер есть просто неоправданная требовательность к ресурсом и несовершеноство конкретного кода - непонятно, с чего это MSXML не может обработать 3-х гиговый XML на 64-х разрядном процессоре и на 64 гб памяти.

Но если посмотреть на новые расширения ( http://www.w3.org/TR/xslt-21/#streaming , сегодня прочитал :-) ), то там таких ограничений нет, на любом хоть микроконтроллере можно будет обработать файл любого размера.
...
Рейтинг: 0 / 0
20.09.2012, 19:21
    #37966317
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите быструю утилиту для XSLT
AntonariyalexeyvgНасчёт "не предназначен" - не согласен. Нормальный формат для слабоструктурированных данныхНе предназначен для объемов , а не слабой структуры.А, ещё забыл сказать.

Независимо от "предназначения" XML по факту разные компании используют его для обмена информацией, и приходится решать задачу по получению и обработке таких файлов, так что если я даже соглашусь в Вами, то это приведёт только к тому, что эту задачу буду решать не я :-)

Импорт этого файлика -это вспомогательная задача, а основной импорт (тоже из XML) - намного большего объёма, там сотни гигабайт в день, как большими, так и маленькими файлами.
...
Рейтинг: 0 / 0
20.09.2012, 20:38
    #37966405
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите быструю утилиту для XSLT
>_<
...
Рейтинг: 0 / 0
23.09.2012, 14:54
    #37968726
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите быструю утилиту для XSLT
Решение одно - написать свой код, см. класс XmlReader.
Читаем файл не весь, а только интересующие атрибуты.
...
Рейтинг: 0 / 0
23.09.2012, 19:18
    #37968936
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите быструю утилиту для XSLT
МСУРешение одно - написать свой код, см. класс XmlReader.
Читаем файл не весь, а только интересующие атрибуты.В принципе да, можно использовать XmlReader...

Но раз уж просто читать, то я просто быстро прочитал файл, используя xsd схему, с помощью XMLBulkLoad...
Так ИМХО проще, чем свой преобразователь писать.
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Подскажите быструю утилиту для XSLT / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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