有没有办法使用MySQL的LOAD XML LOCAL INFILE

问题描述:

这种类型的XML格式?有没有办法使用MySQL的LOAD XML LOCAL INFILE

<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>'; 

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

本声明支持三种不同的XML格式:

  • 列名属性和列值的属性值:

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

  • 列名标签和 列值ES这些标签的内容:
<row> 
    <column1>value1</column1> 
    <column2>value2</column2> 
</row> 
  • 列名称的标签名称的属性,和值是这些标签的 内容:
<row> 
    <field name='column1'>value1</field> 
    <field name='column2'>value2</field> 
</row> 

这是第二种格式,应该在你的情况下工作。

+0

如果我没有看错,我仍然面临一个问题,因为我的XML文档的标签名称不是唯一的,而是多余的。 –

+0

它们是唯一的:'name'与'value'不同。这些是你的列名。 – RedFilter