将特定的XML文件导入mySQL

时间:2014-02-05 16:07:02

标签: mysql xml import

我有一个特定的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中。问题解决了。谢谢!

1 个答案:

答案 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')