Есть ли в любом случае использовать MySQL LOAD XML LOCAL INFILE - PullRequest
0 голосов
/ 05 октября 2011

с этим типом формата XML?

<details>
  <detail>
    <name>Woofer Size</name>
    <value>12"</value>
  </detail>
  <detail>
    <name>Woofer Material</name>
    <value>KEVLAR-reinforced pulp</value>
  </detail>
  <detail>
    <name>Magnet Size</name>
    <value>74 oz.</value>
  </detail>
  <detail>
    <name>Continuous Power Handling</name>
    <value>250W</value>
  </detail>
  <detail>
    <name>Peak Power handling</name>
    <value>750W</value>
  </detail>
  <detail>
    <name>Impedance</name>
    <value>4 ohms</value>
  </detail>
  <detail>
    <name>Number of Voice Coils</name>
    <value>1</value>
  </detail>
  <detail>
    <name>Frame Material</name>
    <value>Steel</value>
  </detail>
  <detail>
    <name>Surround Material</name>
    <value>Santoprene rubber</value>
  </detail>
  <detail>

Я не знаю, как решить эту проблему с получением данных в базу данных MySQL. Мой вопрос: возможно ли загрузить это непосредственно в MySQL?

UPDATE

Решением было создание таблицы.

CREATE TABLE data(
   name VARCHAR(250),
   value VARCHAR(250));

Тогда используйте это утверждение:

LOAD XML LOCAL INFILE
'path/to/the/file.xml'
INTO TABLE data ROWS IDENTIFIED BY '<detail>';

1 Ответ

3 голосов
/ 05 октября 2011

Да, при условии, что у вас есть правильно сформированный документ XML, а ваш пример - нет. См. Синтаксис XML нагрузки

Этот оператор поддерживает три различных формата XML:

  • Имена столбцов в качестве атрибутов и значения столбцов в качестве значений атрибутов:

<row column1="value1" column2="value2" .../>

  • Имена столбцов в виде тегов и значения столбца как содержимое этих тегов:
<row>
    <column1>value1</column1>
    <column2>value2</column2> 
</row>
  • Имена столбцов являются атрибутами имен тегов, а значения содержимое этих тегов:
<row>   
    <field name='column1'>value1</field>   
    <field name='column2'>value2</field> 
</row>

Это второй формат, который должен работать в вашем случае.

...