我试图从sql表A中检索数据,修改一些列,然后将修改后的列插入到sql表B中。
但是我的问题是当我使用时:
$customer= new Customer;
$fakecustomer= new Fakecustomer;
$fake_customer_name_records = $fakecustomer->get()->toArray();
foreach($fake_customer_name_records as $record){
//process columns for each record
$fake_customer_name_records_arry[]=array(
'last_name'=>$last_name,
'first_name'=>$first_name,
'home_phone'=>$phonenumber,
);
}
$customer->insert($fake_customer_name_records_arry);
它只能插入大约1000条记录。 Laravel有办法让我处理大约60,000条记录吗?
由于
答案 0 :(得分:4)
我建议使用" chunk"选项在这里,并在" chunks"中处理记录。根据我的观点,这是更本土化的方式。这是文档所说的内容:
分组结果
如果你需要处理很多(数千个)Eloquent记录,请使用 chunk命令可以让你不用吃掉你所有的RAM:
User::chunk(200, function($users) { foreach ($users as $user) { // } });
传递给该方法的第一个参数是您的记录数 希望收到每个" chunk"。 Closure作为第二个参数传递 将从数据库中提取的每个块调用。
链接阅读更多内容:click
答案 1 :(得分:0)
使用额外的变量并在每次迭代时求和1,当达到1000(或更低)时执行'insert'并重置计数器。
答案 2 :(得分:0)
您是否尝试使用DB::disableQueryLog();
禁用查询日志?我遇到了同样的问题,这个问题解决了很多问题。
此外,在处理迁移或某些需要花费大量时间的流程时,请尝试创建command
,而不是尝试使用controller
。
答案 3 :(得分:0)
Faker是一个PHP库,可以为您生成假数据。无论您是需要引导数据库,创建美观的XML文档,填充持久性以进行压力测试还是匿名化从生产服务中获取的数据,Faker都是您的理想选择。
使用此软件包int[] myIntArray = new int[3];
composer require fzaninotto/faker
阅读更多详细信息