如何解决将巨大的csv文件导入laravel中的数据库
我正在关注的教程: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),2) as $file) {
$data = array_map('str_getcsv',file($file));
foreach($data as $row) {
Subscription::updateOrCreate([
'email' => $row[0],],['email' => $row[0]]);
}
unlink($file);
}
}
}
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。