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

Откуда:
Сообщений: 86
Всем, здрастьте!
Есть XML файл ~ 250 МБ
Нужно его закачать на SQL 2000 или в Акцесс2002 (а потом все равно на SQL)
Файл построен на DTD (внутреннее)
XMLBulkLoad не работает (ему нужен файл схемы и сам файл данных)
Пытался использовать XMLSpy 5,чтобы загрузить в него файл, а потом импорт в БД ( он просто рухнул, когда закончилась память, Комп Р4 2.4 512 ОЗУ)
Файл размером до 2 МБ SPY проглатывает и достаточно корректно затем вставляет в БД
Изменить формат файла, попросить перейти от ДТД к схеме, нельзя
Кто нибудь сталкивался с импортом в БД больших XML (DTD) файлов?
Может быть есть другие пути
Буду признателен за любые советы
22 янв 04, 13:44    [502667]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML в SQL2000  [new]
qu-qu
Member

Откуда:
Сообщений: 9096
на: Изменить формат файла, попросить перейти от ДТД к схеме, нельзя

Слишком категоричное утверждение, IMHO, если файл есть, то с него можно сделать копию, разбить на 250К других файлов, изменить исходную структуру на нужную вам (XSLT еще никто не отменял), в т.ч. и заменить DTD на нужную вам схему XSD...

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

Удачи.
22 янв 04, 14:05    [502725]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML в SQL2000  [new]
ayv
Member

Откуда:
Сообщений: 86
Да нет, категоричности здесь нет, наверное не правильно выразил мысль
Идея понятна, перейти от ДТД к схемам, но
- файл содержит около 30 связанных таблиц
-создать корректную схему без опыта работы с ХМЛ пробематично, а его (опыта) пока недостаточно
Вопрос:
Что значит порубить файл до требуемых размеров?
Чем порубить?
Пока даже помотреть на него нечем.
И наконец, рубка как я ее понимаю, даст просто отбрасывание части таблиц
22 янв 04, 14:38    [502827]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML в SQL2000  [new]
Alex Antonoff
Member

Откуда: Из лесу вестимо
Сообщений: 1251
А разве наличие DTD мешает XSD схеме ?
22 янв 04, 15:00    [502894]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML в SQL2000  [new]
ayv
Member

Откуда:
Сообщений: 86
Структура ХМЛ документа основанная на ДТД значительно отличается от
документа на Схеме
22 янв 04, 15:02    [502903]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML в SQL2000  [new]
Alex Antonoff
Member

Откуда: Из лесу вестимо
Сообщений: 1251
Естественно, они предназначены для разных целей. DTD - определяет структуру XML документа а XSD - мапер структуры с табличками ...
22 янв 04, 15:05    [502914]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML в SQL2000  [new]
qu-qu
Member

Откуда:
Сообщений: 9096
Что значит порубить файл до требуемых размеров?

Мало кто возьмется утверждать, что все 250М данных в исходном файле - это единая и уникальная структура уникальных данных, которые ну никак нельзя разбить на части... :-))
Скорее всего ето - повторяющиеся блоки одних и тех же элементов/атрибутов с разным наполнением данными. Отсюда и возникает идея "разбить" на несколько файлов такого размера, которые можно без проблем "грузить в базу" стандартными средствами. Своеобразный "промежуточный шаг", или 30 шагов, коль скоро упоминалось о 30-ти "таблицах со связями", которые впихнуты в исходный файл.

Чем порубить?

Да чем угодно, Notepad.exe, например... или - UltraEdit-32, или любым другим текстовым редактором, который поддерживает макросы, "регулярные выражения" и пр. "полезные фишки". Можно написать VB-скриптик под WSH, используя объекты DOM парсера MSXML.DLL (хотя ручаться за то, что можно "впихнуть" документ размером в 250М в объект DOM я бы не рискнул), можно сделать собственное приложеньице под любым языком программирования, используя SAX-обработку, но для этого нужно уже больше знать про XML-технологии чем просто "а его (опыта) пока недостаточно ".

Пока даже помотреть на него нечем.

Я думаю, что любого текстового редактора для "посмотреть" - всегда "за глаза хватит".

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

Ну да, выделяешь из исходного документа участок, который должен попасть в одну таблицу, делаешь для него простенькую XSD-схемку, сохраняешь как отдельный файлик и грузишь его всем скопом или по частям, опять же, при этом абсолютно не заморачиваясь на остальные 29 таблиц и место, которое они занимают в исходном файле. Если загрузилось успешно - переходишь к следующей порции данных (таблице).

они предназначены для разных целей. DTD - определяет структуру XML документа а XSD - мапер структуры с табличками ...

Вот это как раз и заблуждение, предназначены они именно для одних и тех же целей - определять структуру XML документа, просто реализовывались каждая в разное время, и способы определения у них разные, у DTD - свой собственный "язык", не имеющий понятия ни о каких "табличках", "базах данных" и пр. ерунде, не относящейся непосредственно к XML, а у XSD - достаточно продуманная, и что самое главное - расширяемая система описания структуры, к тому же базирующаяся на самом XML, что позволяет вставлять туда (в XSD-схемы) любую дополнительную "мета-информацию", в том числе и "мапер структуры с табличками".
22 янв 04, 16:01    [503064]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML в SQL2000  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4256
--Пока даже помотреть на него нечем.


А что редакторы отменили ?

[url=http://]www.lepsik.com/iptc/exml.zip[/url]
22 янв 04, 17:47    [503305]     Ответить | Цитировать Сообщить модератору
 Re: Импорт XML в SQL2000  [new]
ayv
Member

Откуда:
Сообщений: 86
Беру слова о посмотреть нечем назад, погорячился
Не совсем согласен с утверждением, что ДТД не может работать с БД
Работает, хотя возможностей обеспечить целостность и связи действительно не хватает
Наверное действительно придется дробить документ. При этом, если к примеру, дробить по таблицам, то и ДТД нужно дробить
Большое спасибо за помощь
23 янв 04, 06:05    [503771]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить