php – 组合2个CSV文件

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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的内存.

逻辑:

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

请享用!

脚本宝典总结

以上是脚本宝典为你收集整理的php – 组合2个CSV文件全部内容,希望文章能够帮你解决php – 组合2个CSV文件所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。