从XML数据创建MySQL表

时间:2011-03-22 18:01:39

标签: mysql sql xml

我正在处理一系列游说披露记录。参议院秘书publishes这些记录为XML文件,如下所示:

<Filing ID="1ED696B6-B096-4591-9181-DA083921CD19" Year="2010" Received="2011-01-01T11:33:29.330" Amount="" Type="LD-203 YEAR-END REPORT" Period="Year-End (July 1 - Dec 31)">
<Registrant xmlns="" RegistrantID="8772" RegistrantName="CERIDIAN CORPORATION" Address="4524 Cheltenham Drive&#13;&#10;Bethesda, MD 20814" RegistrantCountry="USA"/>
    <Lobbyist xmlns="" LobbyistName="O'CONNELL, JAMES"/>
</Filing>

<Filing ID="179345CF-8D41-4C71-9C19-F41EB88254B5" Year="2010" Received="2011-01-01T13:48:31.543" Amount="" Type="LD-203 YEAR-END AMENDMENT" Period="Year-End (July 1 - Dec 31)">
    <Registrant xmlns="" RegistrantID="400447142" RegistrantName="Edward Merlis" Address="8202 Hunting Hill Lane&#13;&#10;McLean, VA 22102" RegistrantCountry="USA"/>
    <Lobbyist xmlns="" LobbyistName="Merlis, Edward A"/>
    <Contributions>
        <Contribution xmlns="" Contributor="Merlis, Edward A" ContributionType="FECA" Payee="DeFazio for Congress" Honoree="Cong. Peter DeFazio" Amount="250.0000" ContributionDate="2010-09-05T00:00:00"/>
        <Contribution xmlns="" Contributor="Merlis, Edward A" ContributionType="FECA" Payee="Friends of Jim Oberstar" Honoree="Cong. Jim Oberstar" Amount="1000.0000" ContributionDate="2010-09-01T00:00:00"/>
        <Contribution xmlns="" Contributor="Merlis, Edward A" ContributionType="FECA" Payee="McCaskill for Missouri 2012" Honoree="Senator Claire McCaskill" Amount="1000.0000" ContributionDate="2010-09-18T00:00:00"/>
        <Contribution xmlns="" Contributor="Merlis, Edward A" ContributionType="FECA" Payee="Mesabi Fund" Honoree="Cong. Jim Oberstar" Amount="500.0000" ContributionDate="2010-07-13T00:00:00"/>
    </Contributions>
</Filing>

正如您所看到的,某些<Filing>标记还包含<Contribution>标记,但其他标记则不包含。{/ p>

我在这里看到两个对象:贡献者(即游说者)和贡献(即说客和国会议员之间的交易)。

我想将这些记录加载到MySQL数据库中。对我来说,逻辑结构将包括两个表:一个用于贡献者(具有用于名称,ID,地址等的字段)和一个用于贡献(具有金额,接收者等,以及到贡献者列表的关系链接)

我的问题:我是否正确处理此问题?如果是这样,这个数据模式是否有意义?最后,我如何解析XML以将其加载到MySQL表中,因为我已经构建了它们?

3 个答案:

答案 0 :(得分:1)

解决:我正在使用Python SAX解析器来处理XML文件。

答案 1 :(得分:0)

针对这类问题的传统方法是使用ETL tool

您的组织中是否已有此类工具(例如Informatica / Talend)?

另一种方法是编写一个小实用程序来解析这些XML,并通过在MySQL中创建主细节关系来加载这些数据。

答案 2 :(得分:0)

如果您使用的是MySQL 5.5版,则可能会发现LOAD XML命令很有用。

话虽如此,LOAD XML似乎是为了将数据加载到给定XML文件的单个表中,因此它可能不适用于您的特定文件。