2011-10-11 30 views
1

我想解析XML文件到MYSQL數據庫。在Linux上,將XML解析爲MYSQL的最有效方式是什麼?

在LINUX系統(Ubuntu)上執行此操作的最有效和最快速的方式是什麼,而且資源最少。

我有大約1GB的XML文件,我需要每15分鐘解析一次。每個XML大約60KB。

我正在考慮使用Shell或Perl,並自己構建解析器或獲取某種XML工具。

我願意接受任何建議。

+4

您對xml數據的性質以及數據庫架構都沒有提到過。除非您提供更多信息,否則無法爲您提供幫助。 –

回答

2

好了,到目前爲止,我所看到的最快的XML(非驗證)解析器VTD-XML。它可以在任何地方使用性能至關重要。爲了給出一些數字,Core2 2.5 Ghz上的,VTD-XML優於DOM解析器5x〜12x,每個內核持續吞吐量可提供150〜250 MB /秒。

以此速度,可以在10秒內解析1 GB的XML。如果解析成功,則可以隨機遍歷內存中的數據結構,或使用XPath獲取數據。

根據您的要求(1 GB XML輸入),您必須考慮到VTD-XML將佔用1.3至1.5 GB的系統RAM,因爲它必須構建內存數據結構來訪問已分析的數據,加上XML文本本身。

VTD-XML庫適用於C#,Java,C++,C,它需要一些時間去適應,因爲它有一些學習曲線,但從長遠來看,它可能會開始回報。

如果可用內存不足,則流解析器(SAX)應該是更適合該作業的工具。

0

將大量數據導入到MySQL中的最快方式是使用LOAD DATA INFILE將數據從文件加載到PK順序的無密鑰表中。考慮到你很可能受到數據庫性能的限制,可能需要付出將XML轉換爲CSV /任何文件的價格,以便LOAD DATA INFILE進行處理,然後一口氣將其轉入數據庫。

參考http://mysqldump.azundris.com/archives/94-LOAD-DATA-INFILE-and-mysqldump.html

相關問題