记一次 tp5 操作50w 数据的项目(tp5真心很乏力)

本文介绍如何将大量Excel数据高效导入MySQL数据库,并进行数据清洗及查询优化的方法。包括使用CSV转换、SpreadsheetReader工具及MySQL配置调整等步骤。

A:需求

1、从excel把数据导入mysql 

2、简单数据清洗

3、数据查询优化

B:解决方案

1、excel的数据量比较大(60w),先把excel转成csv文件(手动操作),然后使用SpreadsheetReader(github)把数据写入txt(因为有些数据需要处理),使用mysql的load data local infile 把数据导入mysql。

tp的一些配置和mysql配置

 
tp5配置
'break_reconnect' => true,//断线重连 'params' => [ PDO::ATTR_CASE => PDO::CASE_LOWER, PDO::ATTR_EMULATE_PREPARES => true,//预处理 PDO::MYSQL_ATTR_LOCAL_INFILE => true, //可以使用文件导入 ]
相关代码:
 $sql = "load data local infile '路径' ignore into table 表名 character set gbk fields terminated by '_' lines terminated by '|'(`列名`);";
Db::execute($sql);

mysql 配置

local-infile=1 #打开使用文件导入
secure_file_priv = /www/www #路径

2、简单数据清洗

INSERT INTO 表名(`列名`) SELECT `列名` from 表名;//使用最多
UPDATE 表名 a,表名 b set a.a=b.a,a.b=a.b+b.b WHERE a.`code`=b.`code` and a.lb=lb;//使用第二多

3、使用tp5自带的left join 2w数据的两张表,查询速度会很慢,可以自己去修改对应代码,或者使用in来转化;用in就使用到索引比left join快很多。laravel框架不会有这个问题。

使用paginate() 里面会自动去获取count,数据多了,也会很慢,直接使用tp5里面的简单查询即可paginate(10,true)

转载于:https://www.cnblogs.com/JANCHAN/p/11195623.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值