用php處理一個超大sqlite檔(幾十G),有什麼好方法?處理的時候 直接死了~~
认证高级PHP讲师
這麼大的檔案PHP肯定是處理不了的,PHP處理檔首先要把它讀到記憶體中,而每個腳本能夠使用的記憶體跟PHP設定檔中的memory_limit是相關的。只要你記憶體夠大,你可以設定它為不受限制,就能夠使用系統的最大記憶體。
推薦的解決方法是先把檔案切小,透過shell程式例如sed把文件以一定大小(大小依你的PHP記憶體大小決定)切割成若干個小文件,再用PHP處理。
逐行讀取,php有這個函數,每次讀取3行,但是sqlite 是本地數據庫,讀取是驅動的事情吧,和php沒多大關係吧,別一次性全打印就行了吧
應該把資料轉到MYSQL再提供給PHP讀寫。 sqlite本來是個小巧的文件資料庫,處理龐大資料的能力低。
震驚!這麼大的資料量居然還用sqlite。 再說你一次把幾十G讀到內存,除非你的內存真的有幾十G,否則一定爆內存。 建議嘗試分割這個資料庫或轉換成其他類型的資料庫處理。
PHP對文字的處理並不理想,很慢的。 入mysql後在做處理的方案是可行的,就是比較耗時。
參考 用它來查吧
不懂sqlite 但是這麼大的檔案直接處理一定很難。但是大體上有一個思路。就是拆解。按照庫啊。表啊什麼的。
既然是sqlite文件,那就按資料庫讀取->處理->儲存就可以了,php預設能直接使用sqlite.
sqlite轉Mysql吧,然後優化索引,應該沒啥問題了。
參考一下這貨
這麼大的檔案PHP肯定是處理不了的,PHP處理檔首先要把它讀到記憶體中,而每個腳本能夠使用的記憶體跟PHP設定檔中的memory_limit是相關的。只要你記憶體夠大,你可以設定它為不受限制,就能夠使用系統的最大記憶體。
推薦的解決方法是先把檔案切小,透過shell程式例如sed把文件以一定大小(大小依你的PHP記憶體大小決定)切割成若干個小文件,再用PHP處理。
逐行讀取,php有這個函數,每次讀取3行,但是sqlite 是本地數據庫,讀取是驅動的事情吧,和php沒多大關係吧,別一次性全打印就行了吧
應該把資料轉到MYSQL再提供給PHP讀寫。 sqlite本來是個小巧的文件資料庫,處理龐大資料的能力低。
震驚!這麼大的資料量居然還用sqlite。
再說你一次把幾十G讀到內存,除非你的內存真的有幾十G,否則一定爆內存。
建議嘗試分割這個資料庫或轉換成其他類型的資料庫處理。
PHP對文字的處理並不理想,很慢的。 入mysql後在做處理的方案是可行的,就是比較耗時。
參考 用它來查吧
不懂sqlite 但是這麼大的檔案直接處理一定很難。但是大體上有一個思路。就是拆解。按照庫啊。表啊什麼的。
既然是sqlite文件,那就按資料庫讀取->處理->儲存就可以了,php預設能直接使用sqlite.
sqlite轉Mysql吧,然後優化索引,應該沒啥問題了。
參考一下這貨