Автоматическая структура из xsd
От: .alex Ниоткуда  
Дата: 14.07.20 15:28
Оценка:
Добрый день. Можно ли сделать следующее ну или что-то подобное...
У меня есть куча групп .xml-файлов и для каждой группы есть соответствующий .xsd-файл.
Мне нужно импортировать все эти файлы в обычные плоские таблицы в MSSQL Server. Понятно если есть «ветвление» в .xml-файле то грузим избыточные строки — каждый с каждым (декартово произведение).
Так вот собственно вопрос, если способ как-то динамически формировать из .xsd-файла структуру xml и в соответствующую плоскую таблицу и импортировать...
Сейчас делаю все руками, т.е. нахожу сначала все «ветвящиеся» ноды, потом рекурсивно обхожу их (декартово произведение) и ручками прописываю в коде название каждой ноды/атрибута...
Может есть более элегантный подход, а то описывать форматы всех видов/групп xml очень долго будет?
Re: Автоматическая структура из xsd
От: Mihas  
Дата: 14.07.20 15:47
Оценка:
Здравствуйте, .alex, Вы писали:

A>Так вот собственно вопрос, если способ как-то динамически формировать из .xsd-файла структуру xml и в соответствующую плоскую таблицу и импортировать...

Можно засосать XML в кучу таблиц, а потом заджойнить в одну плоскую. Тогда декартово произведение ляжет на плечи MSSQL, а он умеет с ним справляться.

PS Мне кажется, в предыдущей теме был этот же вопрос, но другими словами.
Re: Автоматическая структура из xsd
От: vsb Казахстан  
Дата: 14.07.20 20:00
Оценка:
Вопрос не совсем понятен. Обработай XSD и делай чего хочешь. XSD это же обычный XML документ с определённой структурой. Если у тебя их много, скорей всего и структура у них будет типовая.
Re[2]: Автоматическая структура из xsd
От: .alex Ниоткуда  
Дата: 14.07.20 20:41
Оценка:
Здравствуйте, Mihas, Вы писали:

M>Здравствуйте, .alex, Вы писали:


M>Можно засосать XML в кучу таблиц, а потом заджойнить в одну плоскую. Тогда декартово произведение ляжет на плечи MSSQL, а он умеет с ним справляться.

Да, наверно так будет правильнее, ибо в новых xml настолько много ветвлений, что произведение "каждый — с каждым" очень сильно "раздует" плоскую таблицу. Правильнее будет кусками джойнить и впоследствии искать только в нужных частях...
Буду безмерно благодарен за пример на любом языке, по загрузке xml'ок автоматом, который автоматом делит их на несколько табличек с ключами для связей... При том, что они не "однородны", т.е не все ветвящиеся ноды есть во всех xml... Т.е. для загрузки по-идеие нужно указать xsd, как "эталон"... (типа в нем прописаны все возможные варианты ветвящихся нодов)

M>PS Мне кажется, в предыдущей теме был этот же вопрос, но другими словами.

Да, задача та же, просто в предыдущем вопросе был только один тип xml, и в принципе я ее решил через "ручное" декартово произведение... а сейчас куча разных по форме xml'ок...
Re: Сортировка групами
От: .alex Ниоткуда  
Дата: 15.07.20 15:34
Оценка:
И еще один момент... Ведь можно в mssql server хранить xml как просто тип... А запросы писать по содержимому этого xml можно? Если да, то можно пример... Например select по какому нибудь полю xml и применить какую-нибудь агрегатную функцию к данным xml...
Re: Автоматическая структура из xsd
От: kov_serg Россия  
Дата: 15.07.20 19:11
Оценка:
Здравствуйте, .alex, Вы писали:

A>У меня есть куча групп .xml-файлов и для каждой группы есть соответствующий .xsd-файл.

A>Мне нужно импортировать все эти файлы в обычные плоские таблицы в MSSQL Server.
A>Понятно если есть «ветвление» в .xml-файле то грузим избыточные строки — каждый с каждым (декартово произведение).
Что значт у вас ветвление?

A>Так вот собственно вопрос, если способ как-то динамически формировать из .xsd-файла структуру xml

http://xsd2xml.com/
https://www.liquid-technologies.com/online-xsd-to-cs-generator
https://docs.microsoft.com/ru-ru/dotnet/standard/serialization/xml-schema-definition-tool-xsd-exe

A> и в соответствующую плоскую таблицу и импортировать...

Так (id,text)

В общем случае не получиться. Элементы chioce не очень укладываются в плоскую таблицу.

A>Сейчас делаю все руками, т.е. нахожу сначала все «ветвящиеся» ноды, потом рекурсивно обхожу их (декартово произведение) и ручками прописываю в коде название каждой ноды/атрибута...

Вы бы образец привели для наглядности.

A>Может есть более элегантный подход, а то описывать форматы всех видов/групп xml очень долго будет?

Так автоматизируйте процесс любым перлом.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.