加快CSV上传文件的速度(mysql-php)

加快CSV上传文件的速度(mysql-php),php,mysql,file-upload,csv,upload,Php,Mysql,File Upload,Csv,Upload,我正在尝试上载一个包含超过10万行的CSV文件。下面的代码运行良好,但是速度太慢,因此我不得不修改php.ini。我正在寻找一种更快的方法。 mysqli_query($db, "SET AUTOCOMMIT=0"); mysqli_query($db, "BEGIN"); mysqli_query($db, "SET FOREIGN_KEY_CHECKS = 0"); fgets($handle); $data = ''; while (($data =



我正在尝试上载一个包含超过10万行的CSV文件。下面的代码运行良好,但是速度太慢,因此我不得不修改php.ini。我正在寻找一种更快的方法。
mysqli_query($db, "SET AUTOCOMMIT=0"); mysqli_query($db, "BEGIN"); mysqli_query($db, "SET FOREIGN_KEY_CHECKS = 0"); fgets($handle); $data = '';

 while (($data = fgetcsv($handle, 100000, ';')) !== FALSE):
  $nf = trim($data[0]);
  //ignore values lower than 1
  if ($nf &lt 1):
   continue;
  else:
   $v1 = trim($data[1]);
   $v2 = trim($data[2]);

   $query = "SELECT * FROM tbl_venda WHERE nota = ". $nf ;
   $rs = mysqli_query($db, $query);
   validaQuery($db, $rs);

   //if $nf alrealdy exists, update, else, insert a new row
   if (mysqli_num_rows($rs) > 0):
    //UPDATE
   else:
    //INSERT
   endif; 

  endif;
 endwhile;

 mysqli_query($db, "COMMIT");
 mysqli_query($db, "SET AUTOCOMMIT=1");
 mysqli_query($db, "SET FOREIGN_KEY_CHECKS = 1");
 mysqli_close($db);
</pre>
<p>Does anyone know how can i make it faster?</p>
mysqli_查询($db,“SET AUTOCOMMIT=0”); mysqli_查询($db,“BEGIN”); mysqli_查询($db,“设置外键检查=0”); fgets($handle); $data=''

while($data=fgetcsv($handle,100000,;)!==FALSE):
$nf=修剪($data[0]);
//忽略小于1的值
如果($nf< 1):
继续;
其他:
$v1=修剪($data[1]);
$v2=修剪($data[2]);
$query=“从tbl\U venda中选择*,其中nota=”$核因子;
$rs=mysqli\u查询($db$query);
validaQuery($db$rs);
//如果$nf alrealdy存在,则更新,否则插入新行
如果(mysqli_num_行($rs)0):
//更新
其他:
//插入
endif;
endif;
结束时;
mysqli_查询($db,“COMMIT”);
mysqli_查询($db,“SET AUTOCOMMIT=1”);
mysqli_查询($db,“设置外键检查=1”);
mysqli_close($db);
有人知道我该如何加快速度吗


为什么不直接在mysql中加载数据填充…?或者使用
插入。。。在重复键上
所以你没有为插入的每一行运行select?我必须在csv中处理每个字段,因为有很多空格和其他内容,而且会有更多的人上传这些文件,所以我不希望他们直接访问myadmin。