我有一个特定的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/

10-09 00:35
查看更多