我正在尝试从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条记录?
谢谢
我建议在这里使用“块”选项,并以“块”形式处理记录。我认为这是一种更自然的方式。这是文档说的:
分组结果
如果您需要处理大量(数千)口才记录,请使用chunk命令将使您无需消耗所有RAM即可完成操作:
User::chunk(200, function($users) { foreach ($users as $user) { // } });
传递给方法的第一个参数是您的记录数希望收到每个“大块”。闭包作为第二个论点通过从数据库中提取的每个块都将被调用。
更多链接:click
使用额外的变量,每次迭代求和1,当达到1000(或更低)时,执行'插入'并重置计数器。
您是否尝试过使用DB::disableQueryLog();
禁用查询日志?我遇到了同样的问题,这个漂亮的东西解决了它。
[此外,在进行迁移或需要很多时间的某些流程时,请尝试创建command
,而不要尝试使用controller
。
Faker是一个PHP库,可以为您生成假数据。无论您是需要引导数据库,创建美观的XML文档,填充持久性以进行压力测试还是匿名化来自生产服务的数据,Faker都适合您。
使用此软件包,composer require fzaninotto/faker
$faker = Faker\Factory::create();
for($i=1; $i<=100; $i++){
$s = new User();
$s->name = $faker->name;
$s->email = $faker->email;
$s->comments = $faker->text;
$s->save();
}
您也可以从https://github.com/fzaninotto/Faker阅读更多详细信息>