+ -
当前位置:首页 → 问答吧 → csv文件导入存入数据库

csv文件导入存入数据库

时间:2011-05-10

来源:互联网

用tp做一个csv文件导入,然后存入到数据库中,最后以树状的形式显示出来, 问题是数据不能重复,而且要导入2000多条数据,代码写的不合理运行起来真是太漫长了, 哪位高手有什么好的建议没呢? 我把我写的代码附上,帮我看看,怎样提高代码执行效率呢?  谢谢!!!

$handle = fopen('./upload/'.$companyname.'/csv/'.$file_name,"r");
  
  $count = 1;
  while(!feof($handle))
  {
     $data = fgetcsv($handle);
     if($count>1 && !empty($data))   
     {
      if(!empty($data[1]))
      {
      $csv_info=$paper->where('box_code="'.$data[1].'" and client_id='.Session::get('client_id'))->select();
         $arr_news = array();
      foreach($csv_info as $vo)
      {
       $arr_new = array();      
       $parent_directory_id=$directory->where('directory_id='.$vo['directory_id'])->getField('parent_directory_id');     
       $newparent=$directory->where('directory_id='.$parent_directory_id)->find();
       if($newparent['parent_directory_id']==0)
       {   
        array_push ($arr_new,$newparent['directory_name']);
         array_push($arr_new,$newparent['directory_id']);
       }
             array_push($arr_news,$arr_new);
      }     
      for($n=0;$n<sizeof($arr_news);$n++)
      {
       for($m=0;$m<sizeof($arr_news[$n]);$m++)
       {
        $check[$m][$n]=$arr_news[$n][$m];
       }
      }
      
      for($n=2;$n<8;$n++)
      {
       if(!empty($data[$n]))
       {
        if(!in_array($data[$n],$check[$n-2]))
        {
         $info['directory_name'] = empty($data[$n])?''data[$n];
         if($n!=2)
         {   
          $info['parent_directory_id'] = empty($id)?''id;
         }
         else
         {
          $info['parent_directory_id'] =0;
         }
         if($n==7)
         {
          $info['authority_level'] = empty($data[8])?''data[8];
         }
         else
         {
          $info['authority_level'] = 3;
         }
         $info['client_id'] =Session::get('client_id');
         echo 'one<br>';
         $id = $directory->add($info);
        }
        else
        {
         echo 'guolv<br>';
        $boxs_array=array();
        $boxs=$paper->where('box_code="'.$data[1].'"')->select();        
        foreach($boxs as $vo)
        {
         $newid=$directory->where('directory_id='.$vo['directory_id'])->getField('parent_directory_id');
        if(!in_array($vo['directory_id'], $boxs_array))
        {
         array_push($boxs_array,$vo['directory_id']);
        }
        while($newid!=0)
        {
         if(!in_array($newid, $boxs_array))
        {
         array_push($boxs_array,$newid);
        }
         $newid=$directory->where('directory_id='.$newid)->getField('parent_directory_id');
        }  
        }
        $parentid=$directory->where('directory_name ="'.$data[$n].'"')->select();
        $boxsizes = sizeof($boxs_array);
        for($i=0;$i<$boxsizes;$i++)
        {
         foreach($parentid as $vo)
         {
          $parent_id = $vo['directory_id'];
         if($boxs_array[$i]==$parent_id)
         {   
          $id=$boxs_array[$i];
         }
        }
        }        
        }
       }  
       else
       {
          $msgs=$paper->where('client_id='.Session::get('client_id').' and box_code="'.$data[1].'" and directory_id='.$id)->select();
          if(empty($msgs))
          {
              $dt['client_id'] =Session::get('client_id');
              $dt['box_code'] = empty($data[1])?''data[1];
              $dt['directory_id'] =  $id;
              $dt['paper_status'] =  1;
              $dt['access_level'] =  empty($data[8])?'3'data[8];
              $dt['storage_time'] =  empty($data[9])?time():dateTotime2($data[9]);
              $dt['image_format'] =  strtolower(empty($data[10])?'':$data[10]);
              $paper->add($dt);           
                  }   
       }
      }
      }
      
      else
      {     exit;
      
      $this->redirect('Paper/importPaper/prompt/3');
      }
   }
   
     $count++;   
  }

作者: ttway   发布时间: 2011-05-10

高手看到之后,帮我看看,谢谢!!!

作者: ttway   发布时间: 2011-05-10