+ -
当前位置:首页 → 问答吧 → 如何提升inserting檔案的資料進入MYSQL

如何提升inserting檔案的資料進入MYSQL

时间:2010-10-22

来源:互联网

我现在用PHP写一个程式,现在我的客户可以上传档案,我用regular rexpression去检查档案,再用一个while回圈去跑。

$newsession_id = date('His').getmypid();
$file_han = fopen($upload_dir.$newfile, "r");
while(!feof($file_han)) {
$name = fgets($file_han);
$pattern1 = '/^(.*)\t([0-9]*)\t([0-9]*)\t(.*)\t([0-9]*)\t([0-9]*)/';
if (preg_match($pattern1,$name)) {
list($org_id_1,$start_1,$end_1,$org_id_2,$start_2,$end_2) = split("\t",$name);
$sql = "insert into synteny (org1,org1_start,org1_end,org2,org2_start,org2_end,note) values('$org_id_1','$start_1','$end_1','$org_id_2','$start_2','$end_2','$newsession_id')";
$result = execute_sql("gsv", $sql, $link);
}


我现在这样是可以完成工作,只是我想知道不知有没有更好的方法可以提升Insert的速度呢?

作者: hallohallo   发布时间: 2010-10-22

$newsession_id = date('His').getmypid();
$file_han = fopen($upload_dir.$newfile, "r");
while(!feof($file_han)) {
  $name = fgets($file_han);
  $pattern1 = '/^(.*)\t([0-9]*)\t([0-9]*)\t(.*)\t([0-9]*)\t([0-9]*)/';
  if (preg_match($pattern1,$name)) {
  list($org_id_1,$start_1,$end_1,$org_id_2,$start_2,$end_2) = split("\t",$name);
  $sql .= "('$org_id_1','$start_1','$end_1','$org_id_2','$start_2','$end_2','$newsession_id'),";
}

$sql=substr($sql,0,-1);#去除最后一次的逗点
$sql = "insert into synteny (org1,org1_start,org1_end,org2,org2_start,org2_end,note)values".$sql;

$result = execute_sql("gsv", $sql, $link);


以上是我自己的做法,这样应该就不会跟资料库频繁沟通吧!!

作者: kengkeng   发布时间: 2010-10-22