【发布时间】:2021-02-24 11:51:35
【问题描述】:
我正在关注的教程:https://dcblog.dev/laravel-import-large-csv-file
我实际上正在按照本教程使用 chunk() 将一个巨大的 CSV 文件导入数据库。根据本教程,在将巨大的 CSV 记录分割成每个文件的 1000 条记录后,它应该将该文件存储在我们的 resources 文件夹内的一个临时文件夹中,然后使用 updateOrCreate() 方法将这些文件批量上传到 DB 中。但我只能将巨大的 CSV 记录切成一个文件中的 1000 条记录并存储在临时文件夹中,但无法插入数据库。如果你们中的任何一个好心人通过此链接并找出我在这里做错了什么,这对像我这样的初学者会有很大帮助?
此代码应将数据存储在数据库中。
<?php
namespace App\Console\Commands;
use App\Models\Subscription;
use Illuminate\Console\Command;
class importSubscription extends Command
{
protected $data;
/**
* The console command name.
*
* @var string
*/
protected $name = 'import:subscriptions';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Import Subscriptions from an array.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$path = base_path("resources/pendingsubs/*.csv");
foreach (array_slice(glob($path),0,2) as $file) {
$data = array_map('str_getcsv', file($file));
foreach($data as $row) {
Subscription::updateOrCreate([
'email' => $row[0],
], ['email' => $row[0]]);
}
unlink($file);
}
}
}
【问题讨论】: