хранение данных XML-файла в БД - PullRequest
0 голосов
/ 17 июня 2011

У меня есть XML-файл, и я хочу сохранить его содержимое в БД. Как формат моего xml не зафиксирован 100% У меня есть XML-файл, как показано ниже

   <Jb>
    <T1>false</T1>
    <T2>
        <email>dshetyo@adobe.com</email>
        <userName>passwd</clusterName>
        <passwd>adobe</clusterURL>
        <url>dummy</url>
        <param1>val </paramY>
            <paramN> val </paramN>

    </t2>

    <fx> 
        <a >351108</a>
        <b >4629  <b>
    </fx >
    </Jb>

У меня может быть N параметровнапример, param1, param2 и т. д. (N не фиксировано) Как я могу сопоставить его со структурой реляционной таблицы?Любой другой подход?

Ответы [ 4 ]

2 голосов
/ 17 июня 2011

Это отношения один ко многим. Вам понадобится такой стол:

account
  id
  email
  usernmae

parameters
  account_id
  param_key
  param_value

И тогда ваш SQL выглядит примерно так:

select * from account, parameters where account.id = parameters.account_id

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

(поэтому потребуется дополнительный синтаксический анализ, но если вы не хотите выбирать параметры с помощью SQL, этот путь можно использовать)

0 голосов
/ 18 июня 2011

Oracle имеет XMLDB, их реализация функций XPath для поиска основана на XML. Это означает, что вы можете определить столбец как тип данных XMLType и присоединить к нему / сопоставить схему (это помогает в проверке, а также в развитии XML с течением времени).

XML в MySQL: http://dev.mysql.com/tech-resources/articles/xml-in-mysql5.1-6.0.html

Похоже, что MySQL поддерживает функции XPath, как упоминалось ранее: http://dev.mysql.com/doc/refman/5.6/en/xml-functions.html

Но обратите внимание, эти функции все еще находятся в разработке в MySQL.

0 голосов
/ 17 июня 2011

Один из вариантов - вставить XML непосредственно в таблицу, а затем использовать команды XPath для извлечения полей по запросу. XPath поддерживается основными базами данных: MySQL , Oracle , Postgres ...

0 голосов
/ 17 июня 2011

Обычно содержимое XML хранится в базе данных в одном столбце TEXT или VARCHAR.

Из-за своей структуры в свободной форме он обычно не подходит для отображения O / R.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...