我目前正在解析CSV文件以将数据插入数据库,但问题是因为它是20 000行,所以需要很长时间。有没有办法使用Laravel迁移一次插入更多行?
这就是我现在正在做的事情:
foreach ($towns as $town) {
DB::table('town')->insert(
array(
// data goes here
)
);
}
我想也许我的问题有点模糊。我想知道使用一个查询批量插入多个项目的格式是什么,如果这实际上会对速度产生影响?
答案 0 :(得分:1)
您可以通过使用数据填充数组来进行批量插入:
foreach ($towns as $town) {
$array[] = array(... your data goes here...);
}
然后只运行一次
DB::table('town')->insert($array);
但我真的不知道它会多快多少。您还可以禁用查询日志:
DB::disableQueryLog();
它使用更少的内存,通常更快。