【问题标题】:Internal server error because of the mass data?由于海量数据导致内部服务器错误?
【发布时间】:2016-03-30 16:00:13
【问题描述】:

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

【问题讨论】:

  • 检查你的 apache 日志。

标签: php mysql excel apache server


【解决方案1】:

将您的 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 索引才能“替换”工作。也许您不需要替换,只需插入即可,忘记了这一行。

【讨论】:

  • Thks,兄弟。它有效。我可以再问一个问题吗?我将从数据库中选择海量数据,所以我可以使用什么 sql 来让它像“LOAD DATA LOCAL INFILE”一样快速“?关系查询呢?这样两个表还是三个表?谢谢。
  • 请检查已解决是否适合您。为了选择数据,我使用普通的 SQL 查询(SELECT ... FROM ... WHERE ...等)。如果您需要更多建议,请提出新问题,我无法为您提供更多帮助
猜你喜欢
  • 2016-01-28
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-23
相关资源
最近更新 更多