首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入和查询大量数据MySQL的最佳方式

插入和查询大量数据MySQL的最佳方式
EN

Stack Overflow用户
提问于 2015-05-28 22:00:20
回答 2查看 703关注 0票数 1

我必须从xls文件中读取大约5000行,最多6列。我使用的是PHP >= 5.3。我将使用PHPExcel来完成这项任务。我还没有试过,但我认为它可以处理(如果你有其他选择,欢迎他们)。问题是,每次读取一行时,我都需要查询数据库以验证该特定行是否存在,如果存在,则覆盖它,如果不存在,则添加它。我认为这会花费很多时间,而且PHP只会简单地超时(我不能修改超时变量,因为它是共享服务器)。你能帮我弄一下这个吗?感谢您的帮助

EN

回答 2

Stack Overflow用户

发布于 2015-05-28 22:30:38

因为您使用的是MySQL,所以您所要做的就是插入数据,根本不用担心有行在那里。原因和方法如下:

  • 如果你从PHP查询一个数据库来验证行是否存在,那是很糟糕的。它不好的原因是因为你容易得到错误的结果。在PHP和MySQL之间有一个滞后,PHP不能用来验证数据完整性。这是数据库的工作。
  • 为了确保没有重复的行,我们在列上使用UNIQUE约束。
  • MySQL使用INSERT INTO ... ON DUPLICATE KEY UPDATE语法扩展了标准。这让你只需插入数据,如果有重复的行,你可以用新数据更新它。
  • 读取5000行数据很快。插入5000也很快,如果你把它包装在一个事务中的话。我建议从excel文件中读取100行,启动一个事务,然后插入数据(使用ON DUPLICATE KEY UPDATE处理重复项)。这将使您花费硬盘驱动器的1个I/O来保存100条记录。这样做,您可以在几秒钟内完成整个过程,这使您不必担心性能或超时。
票数 2
EN

Stack Overflow用户

发布于 2015-05-28 22:18:31

首先通过exec运行这个进程,超时无关紧要。

第二步,在读取excel文件前选择所有行。选择not at one query,例如一次读取2000行,然后将其收集到数组中。

第三,使用xlsx格式和chunkReader,这允许读取不是整个文件。不是100%保证,但我也这么做了。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30508785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档