gpt4 book ai didi

php - 在 csv 文件中搜索和替换什么更快?在字符串中还是在数组中?

转载 作者:行者123 更新时间:2023-11-28 23:24:12 25 4
gpt4 key购买 nike

我正在处理通常有 200 万到 500 万行的 csv 文件。我有(例如)3000 个特定值需要用 3000 个不同的值替换。我有两个名为 $search 和 $replace 的 3000 项数组。注意:搜索和替换短语是完整的值(例如 ...,search,... -> ...,replace,...)。此外,我最终会将其导入 mysql 数据库。

哪种方法最有效/最快捷?

  1. 将 csv 文件的全部内容加载到一个字符串中,并使用数组和字符串运行 str_replace

  2. 将 csv 文件加载到数组中并使用 array_search() 替换值

  3. 将csv文件加载到mysql数据库中,然后使用查询进行搜索和替换

  4. 改用python

  5. 其他

我知道我可以设置一些测试并比较它们的运行时间,但我更想了解为什么一个比另一个更好,或者它们搜索的机制(例如:O(n)、二进制搜索等.?)

最佳答案

如果您的 csv 文件那么大(> 100 万行),一次加载它可能不是最好的主意,除非您不关心内存使用情况。

因此,我建议逐行运行替换。这是一个非常基本的示例:

$input = fopen($inputFile, 'r');
$output = fopen($outputFile, 'r+');

while (!feof($input)) {
$input = fgets($input);

$parsed = str_replace($search, $replace, $input);

fputs($output, $parsed);
}

这应该足够快,而且它还可以让您轻松跟踪进度。如果您只想替换特定的列,您可以使用 fgetcsvfputcsv 而不是 fgetsfputs .

我绝对不会尝试使用 mysql 来执行此操作,因为将这么多数据简单地插入数据库将需要一段时间。

至于 python,我不确定它是否真的能以任何方式使算法受益。

关于php - 在 csv 文件中搜索和替换什么更快?在字符串中还是在数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40119499/

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