我有一些 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(使用前将#替换为@)