2014-02-28 50 views
2

我目前解析CSV文件以將數據插入到數據庫中,但問題在於,因爲它是20 000行,所以需要很長時間。有沒有辦法使用Laravel遷移一次插入更多行?使用Laravel遷移一次插入大量數據?

這就是我目前做:

foreach ($towns as $town) { 
    DB::table('town')->insert(
     array(
     // data goes here 
    ) 
    ); 
} 

我想也許我的問題是有點含糊。我想知道什麼格式是使用一個查詢來批量插入多個項目,如果這實際上會在速度上有所不同?

+0

我也遇到過這個問題,但如果你將$ towns數組/對象分成小塊,我認爲它會起作用。每個陣列最多可以有5000個條目 – oBo

+0

也可以檢查此包https://github.com/Maatwebsite/laravel4-PHPExcel – oBo

+0

當您需要保存電子表格格式數據或創建電子表格時,PHPExcel包可能非常有用,但我在這裏避免使用它,因爲它非常飢餓,只會讓OP的問題變得更糟。 – petercoles

回答

1

您可以通過質量填充數據的數組中插入:

foreach ($towns as $town) { 
    $array[] = array(... your data goes here...); 
} 

,然後運行它只是一次

DB::table('town')->insert($array); 

但我真的不知道它是如何更快即可。您還可以禁用查詢日誌:

DB::disableQueryLog(); 

它使用較少的內存,通常速度更快。