[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

[对于初学者] Laravel:我尝试导入 CSV 文件!

你好!我是系统开发部的福井!
这次,我尝试在 Laravel 中使用 Goodby CSV 库导入 CSV 文件,所以我想介绍一下!
*这是我的第一篇博客文章,所以当我写这篇文章时我真的出汗了......!

顺便说一下,这次我做的是在Homestead环境下创建的Laravel项目。
环境如下。
・PHP 7.4.5
・Laravel 7.14.1
・MySQL 5.7

目录

・准备工作
・安装Goodby CSV库
・创建CSV导入方法
・操作确认
・总结
・奖励

提前准备

这次,我将准备一个简单的表格,仅记录书籍的“标题”和“价格”。

表名 图书
柱子 id、标题、价格
[列定义]

        Schema::create('books', function (Blueprint $table) { $table->increments('id'); $table->string('title'); $table->integer('price'); $表->时间戳() });

这是我准备的视图。
查看图片
(是的,很简单!抱歉!)

准备好路由、CSV导入方法和模型后,下一步是安装Goodby CSV库。

安装 Goodby CSV 库

运行以下命令来安装 Goodby CSV 库。

作曲家需要再见/csv

等到它完成。
库安装

安装完成后,按照 Goodby CSV 的 GitHub 上的 README 操作,并将以下使用声明添加到相关控制器中。
再见 CSV GitHub

使用 Goodby\CSV\Import\Standard\LexerConfig;使用 Goodby\CSV\Import\Standard\Lexer;使用 Goodby\CSV\Import\Standard\Interpreter;

创建 CSV 导入方法

CSV导入部分的代码编写如下。
在数据库保存过程之前,会执行 Goodby CSV 配置设置和字符集转换。

    public function importCsv(Request $request) { // 保存 CSV 文件 $tmpName = mt_rand().".".$request->file('csv')->guessExtension(); //TMP 文件名 $request-> file('csv')->move(public_path()."/csv/tmp",$tmpName); $tmpPath = public_path()."/csv/tmp/".$tmpName; //再见 CSV 配置设置 $ config = new LexerConfig(); $interpreter = new Interpreter(); $lexer = new Lexer($config); //将字符集转换为 UTF-8,忽略 CSV 标题行 $config->setToCharset("UTF -8") ; $config->setFromCharset("sjis-win"); $config->setIgnoreHeaderLine(true); $dataList = []; // 给$dataList数组赋值作为新的Observer $interpreter-> addObserver( function (array $row) use (&$dataList){ // 获取每列的数据 $dataList[] = $row; // 解析 CSV 数据 $lexer->parse($tmpPath, $terpreter); / 删除 TMP 文件 unlink($tmpPath); // 注册过程 $count = 0; foreach($dataList as $row){ Book::insert(['title' => $row[0], 'price' => $row[1]]); $count++; } return redirect()->action('ItemsController@book')->with('flash_message', $count . '您已注册一本书! ');

操作确认

这次,我想将以下三行数据保存为 CSV。 (我喜欢音乐。)
CSV 图像

选择 CSV 文件,单击“上传”,
查看图片
该过程似乎已成功完成并重定向。
检查数据库。
数据库图像

我能够确认以 CSV 写入的数据已保存在 DB 中!

概括

我很高兴能够成功地将写入 CSV 的信息保存在数据库中。
开始工作之前我有点犹豫,但我发现它非常方便,从安装库到注册的所有事情都可以在相对较短的时间内完成。
实际上,验证检查和异常处理是必要的,但我想根据情况使用它,例如当我想要注册大量数据时。

奖金

■ 下载CSV 模板文件

通过添加以下方法,我能够下载 CSV 模板文件。

    public function downloadCsv(): object { // 准备输出数据 $csvHeader = ["Title", "Price"]; // 设置以逗号分隔的输出数据 $downloadData = implode(',', $csvHeader); // 兼容with Excel $downloadData = mb_convert_encoding($downloadData, "SJIS", "UTF-8"); // 创建临时 csv 文件 if (! file_exists(storage_path('csv'))) { $bool = mkdir( storage_path(' csv')); // 目录创建失败时抛出异常 if (! $bool) { throw new \Exception("创建目录失败。" } } $name = 'book.csv' ; ('csv/' . $name); // 创建 CSV 文件 if (! file_put_contents($pathToFile, $downloadData)) { throw new \Exception("无法写入文件。") } // 下载响应 return response( )->下载($pathToFile, $name)->deleteFileAfterSend(true);

■ 编辑csv(VScode插件)

我借此机会补充一下。它使得 CSV 非常容易在 VScode 上查看。
编辑 csv

编辑 csv 市场

最后

我开设了我所属的系统开发服务网站“SEKARAKU Lab”。
Beyond是从服务器设计搭建到运营的一站式服务,所以如果您在服务器端开发方面遇到任何问题,请随时联系我们。
SEKARAKU 实验室: [https://sekarakulab.beyondjapan.com/](https://sekarakulab.beyondjapan.com/)

这次就这样了!
感谢您阅读到最后!

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
16,668
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

写这篇文章的人

关于作者

福井宏人

2020年6月加入Beyond。
在系统开发部(横滨办事处)工作。 在工作中,我主要负责游戏API和Web系统的开发,以及Shopify私有应用程序的开发,主要使用PHP。
我总体上喜欢音乐,主要是西方音乐,并以弹吉他为爱好。 他最喜欢的电视节目是《侦探!夜景》和《闹鬼!广告街天堂》。