0

我有一些 XML 试图直接加载到 MySQL 表中。我对“ROWS IDENTIFIED BY”的想法相当满意,但我被困在我想保存元素的标签和元素的文本值的地方。我将尝试解释:

我创建了一个 MySQL 表:

CREATE TABLE stat (
  Type VARCHAR(40) NOT NULL,
  uID VARCHAR(40) NOT NULL,
  value VARCHAR(40),
  created TIMESTAMP,
  PRIMARY KEY (Type, uID)
);

现在我想加载这种格式的 xml:

  <Employee uID="p17336">
    <Name>Joe Bloggs</Name>
    <Stat Type="first_name">Joe</Stat>
    <Stat Type="last_name">Bloggs</Stat>
    <Stat Type="birth_date">1985-07-26</Stat>
  </Employee>

我想要的是每个 Stat 元素的“类型”填充 MySQL 中的“类型”列(这工作正常),然后元素的实际文本(例如“乔”)填充“值”列。我怎样才能做到这一点?目前我正在尝试:

 LOAD XML LOCAL INFILE 'C:/dev/Sample/employees.xml'
 INTO TABLE stat
 ROWS IDENTIFIED BY '<Stat>';

并且正在正确填充所有字段,但“值”除外,它是 NULL。任何想法都非常感谢!

4

1 回答 1

0

LOAD XML语法中所述:

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

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

    <row column1="value1" column2="value2" .../>
  • 列名作为标签,列值作为这些标签的内容:

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

    <row>
      <field name='column1'>value1</field>
      <field name='column2'>value2</field>
    </row>

    这是其他 MySQL 工具使用的格式,例如mysqldump

由于您的 XML 不是这些受支持的格式,因此您必须使用其他一些工具来解析它。

于 2013-03-18T17:49:41.160 回答