处理CSV最快的方式时,bash与PHP VS C / C ++速度进行处理[关闭]

问题描述 投票:-4回答:1

我有500万行的CSV。我有一个选项可以在MySQL数据库导入,然后循环表用PHP。

db_class=new MysqlDb;
$db_class->ConnectDB();
$query="SELECT * FROM mails WHERE .....";
$result=mysqli_query(MysqlDb::$db, $query);
while($arr=mysqli_fetch_array($result))
{
    //db row here 
}

所以我所有环路从表中的邮件,并处理它们。如果它们包含一些不好的字符串,我将它们删除等。

这工作,但就是导入5M行很慢,也逐个循环他们都非常缓慢,编辑行(删除当它们包含错误的字符串)。

我跳过的PHP / MySQL在所有想一个更好的解决方案。我将线加工的.csv文件,线,检查当前行包含特定错误的字符串。我能做到这一点在纯PHP,如:

$file = file('file.csv');
while (($data = fgetcsv($file)) !== FALSE) {
  //process line
   $data[0];
}

这是bash脚本我用循环文件的所有行

while read line; do    
    sed -i '/badstring/d' ./clean.csv
done < bac.csv

虽然在蟒蛇怎么办

with open("file.csv", "r") as ins:
    array = []
    for line in ins:
      //process line here

坏线会像

[email protected]
name@domain (without extension)

等我有一个坏的线是哪几个指标分析,这就是为什么我没有打扰在这里张贴。

然而,对于非常大的文件,我必须寻求更好的解决方案。你们有什么建议?我应该学会如何做到这一点的C / C ++或bash。猛砸我知道一点点了,所以我可以使其更快。是C / +++比bash的这种情况要快得多?或者我应该使用bash坚持?

谢谢

php python c++ c bash
1个回答
1
投票

至于PHP的解决方案,您正在寻找fgetcsv。该手册包括迭代CSV文件的例子。

或者,如果你想成为幻想,你可以用league/csv图书馆去。

© www.soinside.com 2019 - 2024. All rights reserved.