2015-07-03 35 views
0

我有一個XML文件(第一條目加上標題片段下面),我想把它放到一個新創建的數據庫。它看起來像XML將至少有2個不同的表。XML文件到PHPMyAdmin數據庫

我想讓它也忽略一些我不需要的特定行。

此外,我應該先創建表和列?或者界面能爲我創建它們嗎?

<?xml version="1.0" encoding="UTF-8" ?> 
<npidata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.npi.gov.au/includes/download/npi-data-download.xsd"> 
<report> 
    <year>2014</year> 
    <registered_business_name>W H HECK &amp; SONS PTY LTD</registered_business_name> - IGNORE 
    <abn>91009661401</abn> - IGNORE 
    <acn>009661401</acn> - IGNORE 
    <sub_threshold>N</sub_threshold> 
    <data_start_date>2013-07-01</data_start_date> 
    <data_end_date>2014-06-30</data_end_date> 
    <first_published_date>2015-03-31</first_published_date> 
    <last_updated_date>2015-03-31</last_updated_date> 
    <number_of_employees>55</number_of_employees> - IGNORE 
    <facility_name>Rocky Point Sugarmill</facility_name> 
    <jurisdiction_facility_id>Q014HEK001</jurisdiction_facility_id> - PRIMARY KEY 
    <jurisdiction>QLD</jurisdiction> - IGNORE 
    <site_address_street>MILL RD</site_address_street> - IGNORE 
    <site_address_suburb>Woongoolba</site_address_suburb> 
    <site_address_state>QLD</site_address_state> 
    <site_address_postcode>4207</site_address_postcode> 
    <main_activities>Sugarmilling</main_activities> 
    <site_latitude>-27.735666</site_latitude> 
    <site_longitude>153.327611</site_longitude> 
    <anzsic_codes> - IGNORE 
     <anzsic_code> - IGNORE 
      <type>Primary</type><code>1181</code> - IGNORE 
      <name>Sugar Manufacturing</name> - IGNORE 
     </anzsic_code> - IGNORE 
    </anzsic_codes> - IGNORE 
    <public_contact> - IGNORE 
     <title>Mr</title> 
     <name>David</name> - IGNORE 
     <surname>Heck</surname> - IGNORE 
     <position>Managing Director</position> - IGNORE 
     <phone>(07) 5547 4500</phone> - IGNORE 
     <fax>(07) 5546 1233</fax> - IGNORE 
     <email>[email protected]</email> - IGNORE 
    </public_contact> - IGNORE 
    <emissions> 
     <emission> 
      <substance>Ethanol</substance> 
      <destination>Water</destination> 
      <quantity_in_kg>19518</quantity_in_kg> 
      <mass_balance_estimation>N</mass_balance_estimation> 
      <engineering_calculations_estimation>Y</engineering_calculations_estimation> 
      <direct_measurement_estimation>N</direct_measurement_estimation> 
      <emission_factors_estimation>N</emission_factors_estimation> 
      <approved_alternative_estimation>N</approved_alternative_estimation> 
     </emission> 
     <emission> 
      <substance>Ethanol</substance> 
      <destination>Air Fugitive</destination> 
      <quantity_in_kg>2114.45</quantity_in_kg> 
      <mass_balance_estimation>N</mass_balance_estimation> 
      <engineering_calculations_estimation>Y</engineering_calculations_estimation> 
      <direct_measurement_estimation>N</direct_measurement_estimation> 
      <emission_factors_estimation>N</emission_factors_estimation> 
      <approved_alternative_estimation>N</approved_alternative_estimation> 
     </emission> 
     <emission> 
      <substance>Ethanol</substance> 
      <destination>Air Total</destination> 
      <quantity_in_kg>2114.45</quantity_in_kg> 
     </emission> 
     <emission> 
      <substance>Hydrochloric acid</substance> 
      <destination>Land</destination> 
      <quantity_in_kg>2282.95</quantity_in_kg> 
      <mass_balance_estimation>N</mass_balance_estimation> 
      <engineering_calculations_estimation>Y</engineering_calculations_estimation> 
      <direct_measurement_estimation>N</direct_measurement_estimation> 
      <emission_factors_estimation>N</emission_factors_estimation> 
      <approved_alternative_estimation>N</approved_alternative_estimation> 
     </emission> 
     <emission> 
      <substance>Particulate Matter 10.0 um</substance> 
      <destination>Air Fugitive</destination> 
      <quantity_in_kg>398.91285</quantity_in_kg> 
      <mass_balance_estimation>N</mass_balance_estimation> 
      <engineering_calculations_estimation>Y</engineering_calculations_estimation> 
      <direct_measurement_estimation>N</direct_measurement_estimation> 
      <emission_factors_estimation>N</emission_factors_estimation> 
      <approved_alternative_estimation>N</approved_alternative_estimation> 
     </emission> 
     <emission> 
      <substance>Particulate Matter 10.0 um</substance> 
      <destination>Air Total</destination> 
      <quantity_in_kg>398.91285</quantity_in_kg> 
     </emission> 
    </emissions> 
    <transfers></transfers> - IGNORE 
    <pollution_control_devices></pollution_control_devices> - IGNORE 
    <cleaner_production_activities></cleaner_production_activities> - IGNORE 
</report> 

此XML文件有超過11,000個條目,因此手動輸入它們是不可能的。

+0

XML是靜態數據。它不創建*任何*,但它已經*創建*。你至少需要一些你的問題中完全沒有的軟件或程序。問答網站不適用於發佈需求,但您需要提出一個具體問題 - 甚至可以在Stackoverflow上進行編程。那麼你面臨的具體編程問題是什麼?或者說,你剛剛得到支持問題? – hakre

回答

0

你必須先對文件進行一些操作。確實,phpMyAdmin可以導入和導出XML數據,但phpMyAdmin使用的格式與您當前數據的格式不同。

XML數據的不幸之處在於XML對於任何類型的數據,但是爲了系統之間的互操作性,它要求兩個系統用同樣的方言說話,這是我在實際情況下幾乎看不到的相同的方言。

是否有機會通過其他方式獲取數據 - 例如,導出爲其他格式?

下面是phpMyAdmin如何期待數據格式化的示例;您可以通過導出現有表格來查看更多細節,因爲我僅從中間選取了一點。

<database name="stackoverflowtest"> 
    <table name="tblUsers"> 
     <column name="id">1</column> 
     <column name="name">Bob</column> 
    </table> 
    <table name="15"> 
     <column name="id">2</column> 
     <column name="name">Jim</column> 
    </table> 
</database> 

如果您無法以其他格式獲取數據,我建議您使用一些文本解析器來處理您擁有的數據。我認爲CSV可能是一種更好的格式,供您用於導入,並且有些工作可以用awk/sed/perl/python腳本來提供您需要的格式(或可能是任何其他語言,但那些對於處理文本文件是很常見的)。你甚至可以找到一個XML解析庫函數,它可以讓你讀取XML文件作爲實際的XML屬性,而不必自己解析它。這可能是理想的解決方案,但即使沒有,您也可以查找包含<year></year>的每行,並從中間抽取數據。添加一個逗號,然後重複<data_start_date>等等,直到到達<report>/</report>塊的末尾並添加一個換行符。對整個XML文件進行循環,並且您將擁有格式良好的CSV文件,phpMyAdmin會很樂意加載。 MySQL本身使用略微不同的XML風格(仍然不同於你有的);這看起來更像

<row> 
    <field name="id">1</field> 
    <field name="name">Bob</field> 
</row> 
<row> 
    <field name="id">2</field> 
    <field name="name">Jim</field> 
</row> 

我認爲這將比處理XML更容易。不幸的是,解決方案需要一些工作,但希望我已經給你一些資源來啓動。有無數的教程和使用我提到的用於處理文件的工具的示例,但我仍然建議首先查找適用於XML的Python,Perl或PHP庫。