百万excel导入mysql_百万级xlsx表格导入数据库的实现方案

news/2024/11/19 21:29:40/

需求是这样的,供应商给到一份 xlsx 表格(144MB),里面刚好有 100w 行数据(11列)。我需要把它们稍作处理后写入到 mysql 数据库

项目基于 Laravel,既然需要稍作处理,那我首先想到的就是找一个能读 xlsx 的 composer 包

我尝试过最知名的PhpSpreadsheet、对 Laravel 友好的 Laravel-Excel。然而不管是顺序读还是分块读,尝试各种方案最终都会因内存耗尽而中断,哪怕我给 PHP 分配了 8g 内存

这里点名表扬一下 spout,唯有它能在低内存占用的前提下正常顺序读取表格。但整体速度实在太慢,每秒仅13行 ,粗略一算要20多个小时。虽然能用但还是不太行

正苦恼之时,旁边的大佬给我指了条明路——

load data infile

我才学疏浅,这个关键字只在刚接触 mysql 时见过一眼,还从没用过。被这一点才醒悟过来,对呀,我何不把表格导进数据库再读取处理呢,那效率肯定比读 xlsx 高到不知哪里去了

不过 mysql 原生不支持 xlsx 文件的导入,需要先用 Excel 打开然后将它另存为 csv 格式。这一步视电脑配置而异,我这边耗时约1分钟

中文 Windows 下的 Excel 用的是 GBK 编码,而数据表一般都是 UTF-8。因此还需要转码

使用 VSCode 打开这个 csv 文件,里面的中文部分乱码,因为默认用的是 UTF-8 编码打开的。点击右下角的 UTF-8,选择 通过编码重新打开,输入 GBK 然后回车即可正常显示中文

再点击右下角的 GBK,选择 通过编码保存,输入 UTF-8,回车后即可


http://www.ppmy.cn/news/501002.html

相关文章

python-生成xlsx表格

引入 xlsxwriter 包 import xlsxwriter workbook xlsxwriter.Workbook(currency_format.xlsx) cell_format_one workbook.add_format({bold: True, font_color: red}) cell_format_two workbook.add_format({bold: False, font_color: green}) # cell_format_two.set_font_…

xls和xlsx的区别

xls和xlsx都是表格文件格式,后缀看起来也非常像,那为何会设置这两种格式呢?它们之间一定也很多别区别。word是常用办公软件,我觉得有必要了解清楚xls和xlsx的区别才行,下面就给大家详细介绍下吧。 1、文件格式不同&am…

Excel表格文件,.xls和.xlsx格式的区别

用一句话概括,xlsx和.xls格式的主要区别在于,.xls格式单个工作表最多支持65536行,256列。.xlsx格式最多支持1048576行,16384列。此外就是,存储同样多的数据,.xlsx格式文件更小。基本就这两点区别。下面是关…

国内外八大敏捷开发工具盘点

1、Leangoo领歌;官网:Leangoo领歌 - 高效企业必备的敏捷工具,Scrum工具,SAFe敏捷工具,敏捷项目管理,敏捷研发工具 2、VersionOne;官网:https://www.collab.net/products/versiononehttps://www.collab.net/products/versionone …

5年测试老鸟整理,企业自动化测试经验,不要再走弯路了...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 2023年&#xff0…

电脑游戏怎么录屏?其实很简单,只需要简单3步

电脑游戏一直是游戏爱好者最热衷的游戏之一。但是,有时候我们想分享我们在游戏中的精彩时刻,或者记录我们的游戏过程以便后续观看和学习。在这种情况下,录屏就成了必不可少的工具。但是,许多人可能不知道电脑游戏怎么录屏。在本文…

电脑软件下载

电脑软件下载 quartusll9.0下载链接: https://pan.baidu.com/s/18TlW5atsI6GIkvKE8hS7ag ;提取码:iz2l solidwork2012下载链接: https://pan.baidu.com/s/10cD0R9mr5OYguHVW5qsX1Q ;提取码:qj5d visual studio2008下载链接: https://pan.baidu.com/s/1aJz_SC0rmIUU-e70F…

基于TCP/UDP的Socket编程

---- socket概述: socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。 socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写…