如果我的行没有“名称”,我可以使用MySQL LOAD XML LOCAL INFILE吗?
问题描述:
我有一些XML,我试图直接加载到MySQL表中。我对“ROWS IDENTIFIED BY”的想法相当满意,但我坚持要保存元素的标签和元素的文本值。我会尽力解释:如果我的行没有“名称”,我可以使用MySQL LOAD XML LOCAL INFILE吗?
我创建了一个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下记载:
本声明支持三种不同的XML格式:
列名属性和列值的属性值:
<row column1="value1" column2="value2" .../>
列名称作为标签和列值作为这些标签的内容:
<row> <column1>value1</column1> <column2>value2</column2> </row>
列名是
<field>
标签name
属性,和值是这些标签的内容:<row> <field name='column1'>value1</field> <field name='column2'>value2</field> </row>
这是mysqldump通过其他MySQL工具使用的格式,例如。
因为你的XML是没有这些支持的格式,你必须使用一些其他的工具来分析它。
我在mysql文档上看到了这个,我希望能有一些映射技巧,我可以做到解决它......我决定使用hyperjaxb来创建jaxb映射和hibernate实体映射,并使用这些加载和存储。 – Matt 2013-04-22 13:12:53