2014-09-29 2 views
0

나는 헤더와 데이터 필드가있는 CSV 파일이 있습니다. SQL 쿼리를 통해 이것을 삽입하고 헤더를 제거하려면 어떻게해야합니까? 지금 내가 작성한 코드가 작동하지만 헤더로 데이터를 DB에 삽입하고있다.PHP, MySQL - 헤더가있는 CSV 파일 삽입

코드 :

$files = directory_map('./assets/csv/'); 
    foreach ($files as $file) : 
     $filefile = './assets/csv/' . $file; 
     $q = "LOAD DATA LOCAL INFILE '$filefile' INTO TABLE person FIELDS TERMINATED BY ',' 
       LINES TERMINATED BY '\n' (personal_name, personal_lastname, 
       personal_country,personal_address,contact_email,dateadded);"; 
     $this->db->query($q);   
    endforeach; 

답변

2

당신은 데이터를로드에서 ignore xx lines 절 (이의 문서) http://dev.mysql.com/doc/refman/5.1/en/load-data.html]을 사용할 수 있습니다 길의 1/3을 건너 뜁니다.

$q = "LOAD DATA LOCAL INFILE '$filefile' INTO TABLE person FIELDS TERMINATED BY ',' 
      LINES TERMINATED BY '\n' ignore 1 lines (personal_name, personal_lastname, 
      personal_country,personal_address,contact_email,dateadded);"; 

입력이 건너 뛸 수 있습니다. CSV의 라인 - 내가 추측하고있는 것은 귀하의 헤더입니다. 그러나 데이터 자체에 도달하려면 여러 줄을 건너 뛰기 만하면됩니다.

+0

이 오류가 발생합니다. ** 오류 번호 : 1064 SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서를 확인하여 올바른 구문이 3 행에서 '1 줄 무시'근처에서 사용하도록 확인하십시오 ** – Sasha

+0

오류 발견 - 1 줄 무시 무시 ** 'LINES TERMINATED BY'\ n '** . 도와 주셔서 감사합니다 :) – Sasha

0

이 시도 :이 당신을 위해 작동합니다 그래서 희망 ..

$c = 1; 
$files = directory_map('./assets/csv/'); 

     foreach ($files as $file) : 
      if($c==2;) continue; 
      $filefile = './assets/csv/' . $file; 

      $q = "LOAD DATA LOCAL INFILE '$filefile' INTO TABLE person FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (personal_name, personal_lastname, personal_country,personal_address,contact_email,dateadded);"; 
      $this->db->query($q);   
$c++; 
     endforeach;