2013-03-15 128 views
0

我必須創建一個具有超過60個milllion記錄的大型XML文件。 我需要一個快速的方法來做這個操作,因爲它會定期重複。爲數百萬條記錄創建XML

我在兩個地方

  1. 在數據庫中兩個不同的表有數據。
  2. 文件系統在兩個管道分隔的文件中。

目前,我正嘗試使用StaX解析器在JAVA中創建XML文件。

這裏我需要知道我是否應該使用數據庫/文本文件來讀取數據並創建XML文件。

哪一個會更快?
另外,是否有任何特定的API以優化的方式將處理這種大型數據創建/轉換爲XML?

我打開文件處理使用Linux命令以及提供它是一個更快的選項。

更新評論

  • 你能多快可以從兩個單獨的文件的XML元素信息VS DB查詢CSV傾倒? PIPE分隔文件中提供了數據庫中可用的任何內容。 以及FAST如何獲取/創建XML元素信息正是此處問題的意圖。這正是影響整體運營速度的因素。

  • 映射併發症:映射從1到很多。第一個文件中的1個記錄映射到第二個文本文件/表中的大約8000個記錄。

UPDATE on Comment - >使用大輸出緩衝區。

瞭解。將以更大的塊讀取數據庫/文件中的數據,並在處理完整塊後將其刷新。但我應該再次通過數據庫讀取或文件讀取嗎?

更新 我可以使用MySQL數據庫中的任何工具導出它,自動轉換爲XML格式嗎?

+1

數據庫是有意義的查詢和報告。我會將查詢輸出轉儲爲CSV並生成XML輸出。因此,在XML生成的時候,數據庫是獨立的;這可能需要很長時間。在保存到輸出XML文件之前,請使用較大的輸出緩衝區。 – SparKot 2013-03-15 10:39:40

+0

啊,用'pipe separated fields'選項你需要進行基準測試。使用大輸入緩衝區進行文件讀取。您可以從兩個單獨的文件與數據庫查詢CSV轉儲獲取XML元素信息的速度有多快?這兩個文件之間的映射有多複雜?它是'1-1'嗎?是在這些文件中排序的記錄,比如說「主鍵」? – SparKot 2013-03-15 10:50:39

+0

@SparKot - >「保存到輸出XML文件之前使用大輸出緩衝區」是什麼意思。 ? – 2013-03-15 13:17:55

回答

0

您可以使用perlXML::Simple/XML::Writer perl模塊。 Perl也能夠從數據庫和文本文件中讀取數據。

+0

- >它會比從數據庫中逐行讀取數據並創建XML文件更高效嗎? – 2013-03-15 13:16:19

+0

目前尚不清楚它甚至不同於此,更不用說更高效了。 – EJP 2013-03-16 07:21:39