gpt4 book ai didi

PHP加载大型csv文件 - 内存问题

转载 作者:行者123 更新时间:2023-12-04 00:39:51 24 4
gpt4 key购买 nike

我有以下代码

$file="postcodes.csv";
$csv= file_get_contents($file);
$array = array_map("str_getcsv", explode("\n", $csv));
$json = json_encode($array);
print_r($json);

postcodes.csv 大小为 603MB,所以是一个大文件。

在 php.ini 中,如果我有

memory_limit=1024M



我收到错误

Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 256 bytes) in ...



如果我将内存限制增加到 2056,则会出现错误

Fatal error: Out of memory (allocated 1919680512) (tried to allocate 36 bytes) in...



如果我将其更改为-1,则类似。

那么如何在没有内存问题的情况下加载这个 csv 文件呢?

谢谢

最佳答案

而不是将完整文件放入变量中,而是将其解析为换行符,然后执行 str_getcsv在每个数组元素上。

根据您的要求,一个完整的 json包含来自每一行或多个 json 的所有值每个 csv 行一个字符串。

$h = fopen("postcodes.csv",);

if ($h !== FALSE) {
$str ='';
while (($data = fgetcsv($handle)) !== FALSE) {

$str .= json_encode($data); // add each json string to a string variable, save later
// or
$array[]=$data;
}
}
fclose($h);

$finalJsonString = json_encode($array);

我不建议你 print_r整个 arrayjson这么大的物体,因为很难追踪。

关于PHP加载大型csv文件 - 内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33216128/

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