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


    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)

  • 相关阅读:
    jQuery事件
    php学习注意事项
    取消php上传2M的限制(windows服务器)
    PHP编程值得注意的细节
    jQuery load()方法特殊用法!
    PHP显示乱码和apache内部编码问题的解决
    定制Apache索引样式
    这么长时间也没有人看看我
    加载php5apache2_2.dll失败的处理方法
    WinXP下的ApachePHPMySQL安装和配置
  • 原文地址:https://www.cnblogs.com/JANCHAN/p/11195623.html
Copyright © 2020-2023  润新知