我有一个特定的XML文件,我想将其导入到mySQL表中。 XML文件通常遵循以下结构:
<Competitor>
<Person sex="M">
<PersonName>
<Family>LastName</Family>
<Given sequence="1">GivenName</Given>
</PersonName>
<PersonId idManager="SWE" type="nat">2654</PersonId>
<BirthDate>
<Date dateFormat="YYYY-MM-DD">1990-01-01</Date>
</BirthDate>
<Nationality>
<CountryId value="NOR"/>
</Nationality>
<ModifyDate>
<Date dateFormat="YYYY-MM-DD">2011-05-07</Date>
<Clock clockFormat="HH:MM:SS">11:55:05</Clock>
</ModifyDate>
</Person>
<ClubId>184</ClubId>
<ModifyDate>
<Date dateFormat="YYYY-MM-DD">2011-05-07</Date>
<Clock clockFormat="HH:MM:SS">11:55:05</Clock>
</ModifyDate>
</Competitor>
一些竞争对手的条目也有一些附加的行。
我想将名称,出生日期,PersonId和ClubId放在mySQL表中。我到目前为止使用的表如下所示:
CREATE TABLE `rekr` (
`PersonId` int(11) NOT NULL,
`Family` varchar(40) DEFAULT NULL,
`Given` varchar(40) DEFAULT NULL,
`ClubId` int(11) DEFAULT NULL,
PRIMARY KEY (`PersonId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
我已经尝试了mySQL文档
load xml local infile 'file.xml' into table rekr rows identified by '<Competitor>';
中的默认导入命令。这将在表中创建一个条目,其中PersonId = 0,Family = NULL,Given = Null,ClubId =403。ClubId403与XML文件中的第一个条目相同,因此至少部分代码可以工作。我想XML文件中的名称由PersonName和Family / Given都“包含”存在一些问题。我将不胜感激任何帮助。更新:我最后用一些vim宏整理了XML文件,因此和之间的唯一数据就是我需要的数据。然后,将其导入到mySQL中变得非常容易。问题解决了。谢谢!
最佳答案
如果您不介意使用Powershell脚本...它将创建文件query.sql,您可以将其导入到mysql中:
[xml]$xml=gc C:\path\to\xml.xml
$xml.competitors.competitor | %{
$sql="insert into rerk values ('','"+$_.person.personname.family+"','"+$($_.person.personname.Given.innerText)+"','"+$($_.clubId)+"')"
$sql |out-file c:\temp\so\query.sql -append
}
query.sql的内容:
insert into rerk values ('','LastName','GivenName','184')
insert into rerk values ('','LastName2','GivenName','184')
关于mysql - 将特定的XML文件导入到mySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21582279/