2011-07-12 124 views
0

我想對我的數據庫進行備份,但在寫入CSV文件之前需要進行一些數據操作。
我的想法是首先創建一個數組或鏈表格式的數據(主要是對特定項目的插入和計算,包括在數組中間插入,順序很重要),然後將數組項目寫入文件。
每個項目都有相同的字段。 數據量非常大。
在這種情況下,什麼是可以預見的?數組或鏈接列表?數組或鏈接列表

+0

爲什麼不使用數據庫函數創建數據庫轉儲?像postgres中的'pg_dump'? – k102

+0

因爲備份如果對於用戶來說,那對數據庫結構並不瞭解。我只想給他一個選擇讓他回到他以前的系統,所以數據需要格式化,涉及很多條件...... – lvil

回答

3

撇開無論你想用這個數據庫備份做什麼的相對優點,你需要考慮兩個問題:「如何在列表/數組中定位實體」和「我關心我的內存佔用情況?」

根據您計劃如何處理數據,通常可以使用某種形式的索引來定位數據實體,以便您不必拖曳數組或線性鏈表來查找它。

某些形式的哈希可能需要快速查找特定的數據實體。你可以使用鏈表來實現,或者你可以使用arrayname ['index'],這可能更簡單(取決於你打算如何導航和操縱所有這些數據)。

您還提到數據量非常大。因此,這不僅強調索引性能的重要性,而且還表明通過數組或鏈表將整個內存加載到內存中可能不是最好的方法。

就我個人而言,我會使用數據庫本身來幫助...克隆到臨時表,執行操作,插入和計算。您應該可以使用PHP數據庫API來處理您正在使用的任何數據庫,以便輕鬆完成所有這些。

肯定比讀表到內存中,並直接diddling更容易了很多,我認爲:)

然後,您可以給用戶以保持「新」(臨時)表的選項,或取消,並保留原本的。希望這可以幫助。