我正在尝试读取包含500 000行和81列的CSV文件并将其插入数据库中。 CSV大小为160 MB
以下是我的代码
$file = fopen($path, 'r');
while (($line = fgetcsv($file)) !== FALSE) {
}
工作约1小时,访问大约100 000条记录,然后停止处理并显示错误"重置连接"。我已经尝试过增加PHP执行时间限制和内存限制,但这不是一个有效的解决方案。
我是否可以从特定行开始读取CSV而不迭代前一行?
答案 0 :(得分:0)
你需要的神奇功能是fseek()。您可以记下上次结束的地方并继续处理。但是你需要记住,每一行都有不同的长度,因此在文件中找到正确的位置有点困难。
我建议首先摆脱CSV。使用具有固定行大小的Sqlite。