2011-03-22 68 views
0

我正在處理一組遊說披露記錄。參議院publishes這些記錄爲XML文件,該文件是這樣的祕書:從XML數據創建MySQL表

<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>標籤,但別人不一樣。

我在這裏看到兩個對象:貢獻者(即說客)和貢獻(即說客和國會議員之間的交易)。

我想將這些記錄加載到MySQL數據庫中。對我而言,邏輯結構將包括兩個表格:一個用於貢獻者(用於名稱,ID,地址等的字段)和一個用於貢獻(與金額,收件人等等以及與貢獻者列表的關聯鏈接) 。

我的問題:我正確接近這個問題嗎?如果是這樣,這個數據模式是否有意義?最後,我如何解析XML以將它加載到MySQL表中,因爲我已經構建它們了?

+0

我認爲你是在正確的軌道上。您可以使用XSLT將任何給定的XML輸入文件轉換爲SQL語句,然後將其作爲腳本運行以加載表。 – Randy 2011-03-22 18:08:04

回答

1

解決:我正在使用Python SAX解析器來處理XML文件。

0

這些問題的傳統方法是使用ETL tool

您的組織中是否已經有這樣的工具(例如Informatica/Talend)?

另一種方法是編寫一個小工具來解析這些XML並通過在MySQL中創建主細節關係來加載這些數據。

0

如果您使用MySQL版本5.5,則可能會發現LOAD XML命令有用。

這就是說,LOAD XML似乎適合將數據加載到給定XML文件的單個表中,因此它可能無法用於您的特定文件。