2011-08-17 5 views
0

대용량 데이터를 CSV 파일에서 내 데이터베이스로 가져 오는 중 SQL에 오류가 있으면 삽입이 중단되어 대량 삽입 useless.i가 발생합니다. 되돌아 가서 업로드 된 데이터를 삭제하고 삽입시 문제가되는 항목을 제거하고 다시 시작하십시오. 나는 프로그램이 그것을 건너 뛰고 삽입을 계속하기를 원한다. 나는 내가 시험해보고 적용해야한다는 것을 안다. 나는 그것을 내 알 고에 적용했지만 어떻게 사용하는지 이해하므로 삽입을 계속한다. SQL에 오류가 발생보다 여기에 친절 algorithme 또는 SQL을 업로드에는 문제가 존재하지 않는다 내 코드대량 데이터 insert sql 문제

$num=35; //number of columns 
$dum=true; // a check 
$sum=0;// count total entries 

if (($handle = fopen($_FILES['file']['name'], 'r')) !== FALSE) { 
while (($data = fgetcsv($handle, 10000, ',')) !== FALSE) 
{ 
    if($dum) 
     { 
    for ($qwe=0; $qwe < $num; $qwe++) { //searching the columns exact position in case they have been changed 

      if($data[$qwe]=='ID') 
      {$a=$qwe;} 
      . 
          . 
          . 
          . 
          .else if($data[$qwe]=='PowerMeterSerial') 
      {$aa=$qwe;} 
      else if($data[$qwe]=='Region') 
      {$ab=$qwe;} 
      else if($data[$qwe]=='Questions') 
      {$ac=$qwe;} 

     } 
    } 
    if(!$dum) 
    { 

     for($qwe=0;$qwe<$num;$qwe++) 
     { 
      if($qwe==7||$qwe==8) 
      { 
      if($qwe==7){$asd=$data[$qwe];} 
      $data[$qwe]=date('Y-m-d h-i-s',strtotime($data[$qwe])); 
      } 
     } 


     $data[57]=date('Y-m-d ',strtotime($asd));try { 

     $sql="INSERT INTO pm (ID, .......... Questions, dateofdata ,Unsuccessful) VALUES ('$data[$a]','$data[$b]','$data[$c]','$data[$d]','$data[$e]','$data[$f]','$data[$g]','$data[$h]' ,'$data[$i]','$data[$j]','$data[$k]', '$data[$l]', '$data[$m]','$data[$n]','$data[$o]','$data[$p]','$data[$q]','$data[$r]','$data[$s]','$data[$t]','$data[$u]','$data[$v]','$data[$w]', '$data[$x]','$data[$y]','$data[$z]','$data[$aa]','$data[$ab]','$data[$ac]','$data[57]','$data[30]')"; 
     if (!mysql_query($sql,$con)) 
     { 
     die('Error: ' . mysql_error(). $sql); 
     } 

     } 
     catch (Exception $e) 
     { 
    echo'<br>'; echo $sql; 
     } 
    $sum++; 

    }$dum=false; 
    } 

} 
?> 

, 그 때 입력 데이터는 그것을 위해 내가 시도 및 캐치를 시도하고, 데이터 유형과 일치하지 않습니다. . 도와주세요

답변

0

die() 명령을 print()으로 변경하십시오. 오류가 무엇인지 알게되고 스크립트는 다음 줄로 이동합니다.

코드의 구조를 감안할 때 SQL 구문 오류를 일으키는 문자열 (특히 안에 따옴표 포함)을 삽입 할 때마다 문제가 발생한다고 생각합니다. 은 검색어 문자열에 값을 입력하기 전에 CSV에서 각 텍스트 입력란을 mysql_real_escape_string() 번으로 전달해야합니다.

+0

나는 외부 키를 삽입해야하는 또 다른 알고리즘을 가지고 있지만 삽입 값, 해당 값이 테이블에서 발견되지 않으면 오류가 발생합니다! 나는 파일 처리를 계속하고 싶다 !!! –