LINUX.ORG.RU

xml to database

 , ,


0

1

Существует ли готовая либа/утилита для перевода xml в базу данных. Ничего подходящего пока не нашел.

На данный момент мой велосипед выглядит как

dbmap = (
(
  ("tablename", { 
     "field1": "xpath",
     "field2" : ("xpath", func)....
  }), ....
)

★★
Ответ на: комментарий от anonymous

база и xml не мои. Мне нужен только интерфейс, то есть скрипт для преобразования.

P.S. То есть они уже готовые, куда желательно не лезть

at ★★
() автор топика
Последнее исправление: at (всего исправлений: 1)
Ответ на: комментарий от MrClon

в данный момент postgresql. Но, думаю, что это не важно. То есть пока я делаю insert в первую таблицу, получаю id и делаю инсерты в другие таблицы. То есть на выходе нужен набор insert

at ★★
() автор топика
Ответ на: комментарий от at

Надо смотреть структуру XML документа. Но скорее всего можно навелосипедить простейший скрипт на твой_любитый_язык_программирования.
Ну и какие-то утилиты наверное есть. Вроде видел что-то для дампа mysql в xml, значит должны быть инструменты и для разворачивания таких дампов.

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

Я уже навелосипедил. Пока работает. Что не устраивает: преобразование захердкожено. Интересует есть ли готовые утилиты/либы.

at ★★
() автор топика

я писал xsl шаблончик, который генерил нужные вставки, которые по каналу вставлялись в базу, типа:

xsltproc xml2sql.xsl base.xml | mysql

fMad ★★★
()
Ответ на: комментарий от fMad

то есть xslt? Смотрел в эту сторону, но немного не то. Мне нужна запись в главную таблицу, и после этого в остальные, на основании id из главной

at ★★
() автор топика
Ответ на: комментарий от Dred

Так это и работает. Интересует есть ли уже готовые решения. То есть в идеале: конфиг + xml -> набор инсертов

at ★★
() автор топика
Ответ на: комментарий от superuser

С xslt была первая попытка. То есть

xml -> processing1 -> insert1 -> id записи
xml -> processing2 -> insert2...n
меня интересует есть ли что то готовое

at ★★
() автор топика
Ответ на: комментарий от at

Судя по ограничениям, это не простой набор insert. Нет, такой утилиты нет, или ее конфиг тупо сложнее твоей существующей обвязки.

bj
()
Ответ на: комментарий от bj

Обидно. Хотелось бы воспользоваться чем то готовым. Ограничения: инсерт в первую таблицу, и затем инсерт в остальные, используя id из первой. Возможно кто то это уже делал

at ★★
() автор топика
Ответ на: комментарий от fMad

Спасибо!

Правда не до конца разобрался с логикой. В postgresql есть конструкция insert... returning. Попробую приделать

at ★★
() автор топика
Ответ на: комментарий от at

просто парадигма такая — ты пишешь xsl программу которая в рамках XML потока генерирует SQL программу которая работает в контексте одного подключения к базе

fMad ★★★
()
Ответ на: комментарий от fMad

Спасибо за идею. Мне не приходило в голову для работы с id использовать внутренние средства базы

at ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.