如果我的行没有“名称”,我可以使用 MySQL LOAD XML LOCAL INFILE 吗?

2024-04-14

我有一些 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 元素的“Type”填充 MySQL 中的“Type”列(这工作正常),然后元素的实际文本(例如“Joe”)填充“value”列。我怎样才能做到这一点?目前我正在尝试:

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

并且我正在正确填充除“值”之外的所有字段,该字段为 NULL。任何想法非常感谢!


正如下面记录的LOAD XML Syntax https://dev.mysql.com/doc/en/load-xml.html:

该语句支持三种不同的 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 工具使用的格式,例如mysql转储 https://dev.mysql.com/doc/en/mysqldump.html.

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果我的行没有“名称”,我可以使用 MySQL LOAD XML LOCAL INFILE 吗? 的相关文章

随机推荐