0
我有MySQL InnoDB表,其中有100萬行,我選擇100K行導出。表格大約有200列。PHP,MySQL - 載入大約100k條記錄並將它們導出到xml
我有什麼迄今所做的:
不是*
SELECT列1,列2,... FROM MY_TABLE WHERE刪除= 0全選 - 負載100K記錄
使用XMLWriter php庫沖洗
$writer = new XMLWriter(); $writer->openMemory(); $writer->setIndent(true); $writer->startDocument('1.0', 'UTF-8'); $writer->startElement('export'); $iterator = 0; $data = $this->getData(); foreach($adverts as $advert) { $writer->startElement('ad'); $writer->writeElement('id', $data->id); // .. other columns $writer->endElement(); // end ad if (0 == $iterator % 1000) { file_put_contents($this->getFilePath(), $writer->flush(TRUE), FILE_APPEND); } $iterator++; }
但我仍然有致命錯誤:允許的內存大小......字節耗盡
是否有任何其他方式如何優化?我想我可以用其他方式從數據庫加載數據,比如在第一輪加載id,然後選擇IN(10k_ids),但我還沒有測試這個想法。
謝謝您的意見。
我有非常類似的問題在How to export HTML table with 100K records with number formatting without memory exhaust
但沒有辦法如何實現低內存消費。
人仍然使用XML? ;-) – Strawberry
寫幾個文件,如每個10K? – michi
它必須是一個文件。我的想法是用數據庫的foreach加載10k,所以在變量中保存了更小的數據 –