我從XML文件中提取大量數據,所有這些數據都需要相互驗證(超過500,000條記錄)。它是位置數據,因此它具有以下信息:縣,街道前綴,街道後綴,街道名稱,起始門牌號碼,結束號碼。有重複,房號重疊等,我需要報告所有這些數據(如有問題的地方)。另外,xml文件中沒有數據排序,因此每條記錄都需要與其他所有記錄進行匹配。在Python中處理數據的大型臨時數據庫
現在我創建一個基於街道名稱信息的位置字典,然後存儲房屋號碼開始和結束位置的列表。完成這一切之後,我正在遍歷創建的海量數據結構,以便在每個列表中查找重複項和重疊項。我遇到了數據結構的大小問題以及出現了多少錯誤。
向我提出的一個解決方案是創建一個臨時SQLite數據庫,以保存從文件中讀取的所有數據,然後運行數據庫以查找數據的所有問題,並將其報告出來,然後銷燬DB。有沒有更好/更有效的方法來做到這一點?並有更好的方法來解決這個問題的任何建議?
作爲一個fyi,我正在閱讀的xml文件超過了500MB(存儲了除這條街道信息之外的其他數據,儘管這是它的大部分數據),但是文件的處理不在我所在的位置遇到問題時,它只是在處理從文件中獲得的數據時。
編輯:我可以進入更多的細節,但海報誰提到,有足夠的數據內存空間實際上是正確的,雖然在一個情況下,我確實必須運行這對350萬條記錄,在那我確實需要創建一個臨時數據庫。
考慮使用Python標準庫bsddb包。它提供了一個字典界面,但由磁盤上的哈希表或B樹支持。 –
自2.6起已棄用http://docs.python.org/library/bsddb.html –
好的,使用http://www.jcea.es/programacion/pybsddb.htm和bsddb3模塊...相同的想法,名字略有不同。 –