如何将大体积XLSX/CSV导入PhpMyAdmin?遇导入难题求解决
直接导入XLSX文件的解决方案(PHP环境)
方法一:使用PhpSpreadsheet库(推荐,PHPExcel官方替代版)
- 安装依赖
通过Composer快速安装:composer require phpoffice/phpspreadsheet - 导入代码示例
<?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\IOFactory; // 合理设置执行时间与内存限制(不建议设为0,避免耗尽服务器资源) ini_set('max_execution_time', 300); ini_set('memory_limit', '256M'); try { // 加载目标XLSX文件 $spreadsheet = IOFactory::load('你的数据集路径/kaggle_dataset.xlsx'); $worksheet = $spreadsheet->getActiveSheet(); // 逐行读取数据 $dataset = []; foreach ($worksheet->getRowIterator() as $row) { $cellIterator = $row->getCellIterator(); $cellIterator->setIterateOnlyExistingCells(false); // 保留空单元格数据 $rowData = []; foreach ($cellIterator as $cell) { $rowData[] = $cell->getValue(); } $dataset[] = $rowData; } // 此处可将$dataset写入数据库或进行后续处理 print_r($dataset); } catch (\Exception $e) { echo '导入失败: ' . $e->getMessage(); } ?>
方法二:使用PHPExcel(旧版兼容方案)
若无法使用Composer,可手动下载PHPExcel库,核心逻辑与上方一致:
<?php require_once 'PHPExcel/PHPExcel.php'; $objPHPExcel = PHPExcel_IOFactory::load('你的数据集路径/kaggle_dataset.xlsx'); $worksheet = $objPHPExcel->getActiveSheet(); // 后续数据读取逻辑参考PhpSpreadsheet示例 ?>
额外优化建议
- 大文件导入时,启用
setReadDataOnly(true)跳过格式解析,大幅降低内存占用:$reader = IOFactory::createReader('Xlsx'); $reader->setReadDataOnly(true); $spreadsheet = $reader->load('你的数据集路径/kaggle_dataset.xlsx'); - CSV转换异常多因编码/分隔符问题:转换时选择UTF-8编码,确认分隔符与导入工具匹配,避免特殊字符破坏格式。
内容的提问来源于stack exchange,提问作者Yassineflow
相关产品推荐
相关产品推荐

