php - 海量数据导致服务器内部错误?

标签 php mysql excel apache server

我有一个excel表格,里面有几万条数据。 然后我建立一个mysql数据库并在excel表上创建一个具有相同字段的表。 但是当我使用Phpmyadmin或PHPExcel方式将数据插入数据库时​​,大约5分钟,它总是显示500内部服务器错误。 造成这种情况的原因是什么?是数据海量吗?还是别的原因。 我的服务器是Apache+PHP 5.4n+mysql 5.5.40 (当然,我还更改了PHP上的max_excution_time和memory_limit)

最佳答案

将 Excel 转换为 CSV 格式并读取/使用 LOAD DATA LOCAL INFILE

例如,我复制/过去我自己的代码,但使其适应您的需求

$dataload = 'LOAD DATA LOCAL INFILE "'.$filename.'"
                REPLACE
                INTO TABLE '.$this->csvTable.' CHARACTER SET "utf8"
                FIELDS TERMINATED BY "\t"
                IGNORE 1 LINES
            ';

$result = (bool)$this->db->query($dataload);

其中 $filename 是 CSV 的本地路径(您可以使用 dirname(FILE) 来获取它)

这个 SQL 命令非常快(添加/更新所有 CSV 只需 1 或 2 秒)

阅读文档,但是当然您需要在用户表上有一个 uniq 索引才能进行“替换”工作。也许您不需要替换,只需插入即可,忘记了这一行。

关于php - 海量数据导致服务器内部错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36314046/

相关文章:

php - 在 Codeigniter 中将缩略图裁剪为正方形

php - 如何使用sql结果中的值作为其子查询的表名?

php - 为画廊分层图像的最佳方式是什么?

php - 执行邻近搜索的路线图

MySQL/ASP - 令人困惑的 SQL 查询

excel - PyQt : How to sort QTableView columns(strings and numericals)

php - 序列化器 Symfony 上的回调

MySQL:连接 2 个表并显示子表的最后日期

.net - 使用 excel 和 Visual Studio 2010 时出现 "Class not registered"错误

java - 如何使用 Apache POI 获取 MS Excel 单元格的别名