php – 组合2个CSV文件

前端之家收集整理的这篇文章主要介绍了php – 组合2个CSV文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在 PHP中组合两个CSV文件.我正在寻找完美的方法.到目前为止,这是我的代码
$one = fopen('data5.csv','r');
$two = fopen('userdata.csv','r');

$final = fopen('final_data.csv','a');

$temp1 = fread($one,filesize("data5.csv"));
$temp2 = fread($two,filesize("userdata.csv"));

fwrite($final,$temp1); 
fwrite($final,$temp2);
如果您有大型CVS并且您不想使用机器的大部分内存(例如,每个CSV为1GB),我会给您一个解决方案.
<?PHP
function joinFiles(array $files,$result) {
    if(!is_array($files)) {
        throw new Exception('`$files` must be an array');
    }

    $wH = fopen($result,"w+");

    foreach($files as $file) {
        $fh = fopen($file,"r");
        while(!feof($fh)) {
            fwrite($wH,fgets($fh));
        }
        fclose($fh);
        unset($fh);
        fwrite($wH,"\n"); //usually last line doesn't have a newline
    }
    fclose($wH);
    unset($wH);
}

用法

<?PHP
joinFiles(array('join1.csv','join2.csv'),'join3.csv');

有趣的事实:

我只是用它来连接2个大约500,000行的CSV文件.花了大约5秒钟,使用了512kb的内存.

逻辑:

打开每个文件,读取一行,然后将其写入输出文件.是的,写入每一行可能比编写整个缓冲区要慢,但这样可以在对机器内存温和的同时使用繁重的文件.
在任何时候,您都是安全的,因为脚本一次只能在线读取然后写入.

请享用!

原文链接:https://www.f2er.com/php/139059.html

猜你在找的PHP相关文章