【发布时间】:2016-12-01 16:12:16
【问题描述】:
我有很大的问题。
我的任务是输入有关产品的数据库信息。除价格外的所有信息都在 100mb 大的 XML 文件中。
在另一个文件中有关于该产品价格的信息。即 CSV 文件,大小约为 200mb
简单的逻辑
- 将 XML 解析为数组
- 在另一个文件中按产品的唯一 ID 搜索价格
- 将找到的价格添加到该产品所在的数组元素中
- 将信息放入数据库
但我不能那样做。 SIZE 有问题。
我设法解析 XML 并将其放入数组中,但我无法处理 CSV 文件。如果有 1000 个产品,他需要为每个产品解析 CSV 文件(该 CSV 文件有超过 30.000.000 行)。我无法解析那个 CSV 文件,更不用说 1000 个了。
我需要建议如何解决这个问题
【问题讨论】:
-
尝试时会发生什么?显示您的代码和任何错误消息。也许你需要提高你的内存限制?
-
Problem is in SIZE.使用 XMLReader 并将其解析为数组,并为 csv 使用 fopen,fread,fclose(也不将其完全解析到内存中)。这是一个很好的开始。 -
您也可以在解析 XML 之前先将 CSV 完全解析到一个临时数据库(csv-header 作为表字段)。然后使用 DB-CSV 数据(在 csv 文件的表格中查找)。
-
@JustOnUnderMillions 我正在使用 XMLReader 进行解析,而不是一次处理整个文件,没关系。我在逐行读取 CSV 时遇到问题,因为有超过 3000 万行,所以 PHP 无法在十分钟内完成足够的“fgetcsv”,我需要更快的方法(如果有的话)。