2012-05-13 2 views
0

.csv 파일을 업로드하려고하고 각 행을 mysql db로 저장하려고합니다. 그래서 .csv 파일의 각 행에 대해 mysql db에 행을 만들고 싶습니다. 실례지만 내 뜻을 알기를 바랍니다. 그냥 every1 알려PHP + mysql에서 .csv로 여러 행 저장

$path = $targetPath; 
$row = 1; 

if (($handle = fopen($path, "r")) !== FALSE) { 

    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { 

     $row++; 
     $dataEntries[] = $data ; 

    } 

    fclose($handle); 

} else{ 

    echo("There has been an error parsing ".$csvname); 

} 

//Everything seems to be okay, we can save it 
foreach($dataEntries as $line){ 

    $oName = $line[0]; 
    $oUrl = $line[1]; 
    $oType = $line[2]; 
    $oDescr = $line[3]; 

    //If there is just one row in the csv file, Output: "string" 
    //If there are more rows, than the output is "stringstring1string2" 
    echo($oName); 

} 

UPDATE

:

내가 첫 번째 행에서 데이터를 얻을 수 오전, 지금까지 가지고있다 @Greg P의 솔루션은 근무

LOAD DATA LOCAL INFILE '$targetPath' INTO TABLE tableName FIELDS TERMINATED BY ';' (name,url,type,descr) 
+0

귀하의 MySQL 테이블 구조는 무엇입니까? – Jeroen

답변

8
로드 DAT를 사용하지 왜

: 좋은,하지만 난 내 서버에 업로드 된 csv 파일에 액세스 할 수 있도록 INFILE 명령에 LOCAL 추가했다 INFILE, 다음과 같은 내용 :

LOAD DATA INFILE 'filename.csv' 
INTO TABLE filenames 
FIELDS TERMINATED BY ',' 
(Name, Url, Type, Descr) 
+0

+1, 이것이 가능하다는 것을 깨닫지 못했습니다! – Jeroen

+0

바퀴를 다시 발명하려고하는 박동, – GDP

+0

이것은 훌륭한 해결책처럼 보인다 :) 단지 한 가지 : 나는 진짜 멍청한 사람이다 .... 그래서 나는 파일명을 무엇으로 넣을 까? 전에 선언 된 CSV 파일 이름이 될 수 없습니까? 왜냐하면 구문 오류가 발생했기 때문입니다. 내 쿼리는 다음과 같이 보입니다. 'LOAD DATA INFILE'$ targetPath 'INTO tableName 파일 이름 FIELDS TERMINATED BY'; ' (이름, url, type, descr)' – Andrej