【问题标题】:Is there anyway to use MySQL's LOAD XML LOCAL INFILE无论如何要使用 MySQL 的 LOAD XML LOCAL INFILE
【发布时间】:2011-10-05 15:29:56
【问题描述】:

使用这种类型的 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>';

【问题讨论】:

    标签: mysql xml load local file-io


    【解决方案1】:

    是的,假设您有一个格式良好的 XML 文档,而您的示例不是。 见LOAD XML Syntax

    此语句支持三种不同的 XML 格式:

    • 列名作为属性,列值作为属性值:

    &lt;row column1="value1" column2="value2" .../&gt;

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

    这是在您的情况下应该适用的第二种格式。

    【讨论】:

    • 如果我没看错,我仍然会遇到问题,因为我的 XML 文档的标签名称不是唯一的并且是多余的。
    • 它们是独一无二的:namevalue 不同。这些是您的列名。
    猜你喜欢
    • 2017-08-12
    • 2020-08-31
    • 2013-10-23
    • 2013-04-10
    • 2012-06-01
    • 2012-10-05
    • 1970-01-01
    • 2020-07-25
    相关资源
    最近更新 更多