在PHP中进行位处理后,我有大量的excel文件要导入我的MySQL数据库。 所以我尝试了多个用于Excel和CSV读取大数据集的php库。
但是在所有这些问题中面临一个共同的问题,即在处理多达17万条记录之后(每次运行随机播放,如130k或150k或160k)。
我处于最糟糕的情况,我无法确定究竟是什么问题,这会阻止进一步阅读文件。
我认为没有内存问题或任何其他CPU问题。
尝试设置
ini_set('memory_limit', '3G');
并尝试了这个:
ini_set('memory_limit', '-1');
还尝试将xlsx文件转换为csv然后导入,然后只能处理150k左右的记录。从xlsx文件中只有几千条记录被处理。 CSV文件大小为220MB。
我已尝试上传到我的笔记本电脑(8GB RAM,最新的Windows 10和所有最新硬件),以及AWS(T2小型/迷你)服务器。仅在AWS上,我获得了上述数字,而在笔记本电脑上仅在几千条记录中被停止。
请建议是否需要遵循其他方法。
我写的代码是:
ini_set('memory_limit', '-1');
include __DIR__.'/../config.php';
require(DIR_LIB_PATH.'spreadsheet-reader/reader_writer/php-excel-reader/excel_reader2.php');
require(DIR_LIB_PATH.'spreadsheet-reader/reader_writer/SpreadsheetReader.php');
$file_path = '/path/to/file.csv';
$reader = new SpreadsheetReader($file_path);
foreach($reader as $row_data)
{
$inserted_row = insertLead($row_data);
}
答案 0 :(得分:0)
你可以使用php的spout http://opensource.box.com/spout/来读取非常大的excel文件而不会出现任何问题。它是一个非常优秀且快速的php库,可以读取写入大型excel文件。并且还尝试使用批量插入,否则将逐个插入每一行非常慢。