我有一个特定的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.ClubId 403与XML文件中的第一个条目相同,因此代码的某些部分至少起作用。我猜在XML文件中的名称被PersonName和Family / Given“包含”存在一些问题。我非常感谢任何帮助。
更新:我最终用一些vim宏整理了XML文件,因此我之间的唯一数据就是我需要的数据。然后很容易导入到mySQL中。问题解决了。谢谢!
答案 0 :(得分:0)
如果你不介意使用powershell脚本......它将创建你可以导入mysql的文件query.sql:
[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')