无论如何都使用MySQL的LOAD XML LOCAL INFILE

时间:2011-10-05 15:29:57

标签: mysql xml load local file-io

使用这种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中?

更新

解决方案是创建一个表。

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 个答案:

答案 0 :(得分:3)

是的,假设你有一个结构良好的XML文档,你的例子不是。 见LOAD XML Syntax

  

此语句支持三种不同的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>

这是您的第二种格式。