gpt4 book ai didi

php - 大文件解析导入 PHP MySQL

转载 作者:可可西里 更新时间:2023-11-01 07:08:21 24 4
gpt4 key购买 nike

我有一个很大的 csv 文件(大约 700MB),我正试图将其解析并插入到 MySQL 数据库中。我逐行读取 csv(大约 4x10^6 行)并解析要插入的记录。然后我将记录分批插入数据库,每批约 10k 条记录。解析过程中有一些事情,例如使用 preg_match 将格式 11d 12:34:56 的持续时间转换为小时数。

preg_match('/(?P<days>\d+)d (?P<hours>\d+)?P<minutes>\d+)?P<seconds>\d+)/', $hoursUsed, $matches);

脚本需要大约 40 分钟才能完全解析文件并将所有记录插入数据库。我在这里的问题是:* 预计时间应该是多少?请问40分钟正常吗?* csv文件的解析可以是

我正在用 PHP 解析一个大小约为 700MB 的文件 (csv)(大约 4x10^6 行),但解析该文件大约需要 40 分钟。我正在尝试优化解析,但只能将其优化 45 到 40 分钟。我的问题是:

  • 预计什么时间?不知40分钟是否正常?
  • 我对请求执行此操作,因此在文件被完全解析并插入所有内容之前没有响应。有没有更好的方法将其委托(delegate)给异步进程?

仅供引用,我正在使用 CakePHP。

最佳答案

使用 LOAD DATA INFILE 会大大加快速度。只需将持续时间值加载到 CHAR 字段中,让 MySQL 稍后处理它。

这样,您将数据处理交给数据库,这将比 PHP 快得多。

此外,40 分钟对于 700MB 和 400 万条记录来说听起来还不错。当然这一切都取决于代码、机器等。

关于php - 大文件解析导入 PHP MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12688429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com