php中将.csv导入数据表中

这篇博客探讨了在处理大量数据导出时,PHPExcel库可能遇到的性能问题,如卡死和内存溢出。建议使用fputcsv()函数替代,因为它在效率上更胜一筹。文章通过示例代码展示了如何读取GBK编码的CSV文件,并转换为UTF-8编码插入数据库。同时,还涉及了不同文件格式如xls和csv的特点。
摘要由CSDN通过智能技术生成
//Excel表格最高支持104W行,导出数据达到上万的量,PHPExcel就显得有点无力了,经常卡死或者内存溢出,若做普通的数据导出功能,建议使用fputcsv()函数,因为此函数要比PHPexcel要高效的多,二十万数据导出大概需要2到3秒。
//xls 文件就是Microsoft excel电子表格bai的文件格式。
//csv是最通用的bai一种文件格式,它可以非常容易地被导入各种PC表格及数据库中。 此文件,一行即为数据表的一行。生成数据表字段用半角逗号隔开。
//csv是文本文件,用记事本就能打开,XLS是二进制的文件只有用EXCEL才能打
 public function  excel_in(){
        try {
            header('Content-Type:text/html; charset=utf-8');
            //防止超时
            set_time_limit(0);
            //防止内存溢出
            ini_set("memory_limit","512M");
            $handle = fopen('public/data.csv', 'r'); //csv文件 在保存时就生成csv 不要直接修改后缀为csv 否则报错
            $count = 0;
            $data_artificial = array();
            while ($data = fgetcsv($handle, 500000, ",")) {
                if (isset($data[0]) && !empty($data[0])) {
                //排除第一行的表头
                    if ($count > 0) {
                        $data_artificial[$count - 1]['goods_code'] = iconv('GBK', 'UTF-8', $data[0]);
                        $data_artificial[$count - 1]['comment_create_time'] = iconv('GBK', 'UTF-8', $data[1]);
                        if (empty($data[2]) || $data[2] == '') {
                            $data_artificial[$count - 1]['nick'] = '**';
                        } else {
                            $data_artificial[$count - 1]['nick'] = iconv('GBK', 'UTF-8', $data[2]);
                        }
                        if (iconv('GBK', 'UTF-8', $data[3]) == '默认' || $data[3] == '') {
                            $data_artificial[$count - 1]['head_img'] = 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1562136648716&di=9eef9bea32a5431aae48fce62f55801f&imgtype=0&src=http%3A%2F%2Fpic.51yuansu.com%2Fpic3%2Fcover%2F01%2F69%2F80%2F595f67c042c1b_610.jpg';
                        } else {
                            $data_artificial[$count - 1]['head_img'] = iconv('GBK', 'UTF-8', $data[3]);
                        }
                        $data_artificial[$count - 1]['evaluate_text'] = iconv('GBK', 'UTF-8', $data[4]);
                        $data_artificial[$count - 1]['evaluate_material'] = iconv('GBK', 'UTF-8', $data[5]);
                        $data_artificial[$count - 1]['sku_param_value'] = iconv('GBK', 'UTF-8', $data[6]);
                    }
                    $count++;
                }
                ob_flush();
                flush();

            }
            fclose($handle);
            $result = $this->artificial_evaluate_material_model->insert_batch($data_artificial);
            if ($result) {
                $res = array('statusCode' => 200, 'message' => '导入成功!');
                echo json_encode($res);
                exit();
            } else {
                $params = array('statusCode' => 'TY002', 'message' => '导入失败!');
                echo json_encode($params);
                exit();
            }
        }catch(Exception $e){
            print $e->getMessage();
            exit();
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值