2011-08-02 4 views
1

대용량 CSV 문서를 mysql 데이터베이스에 업로드하고 싶은 사람이 나를 도와 줄 수 있습니다. 표는 10 개 필드로 구성되어 있지만 표제없이 5 개 필드 만 업로드하고 싶습니다. 나는이 데이터베이스에 하나의 필드에 CSV에서 먼저이 수입 된 모든 필드에서 브라우저대용량 CSV 파일을 MySQL 데이터베이스에 업로드

$filename = $_FILES['sel_file']['tmp_name']; 
<?php 
    if($_FILES["file"]["type"] != "application/vnd.ms-excel"){ 
     die("This is not a CSV file."); 
    } 
    elseif(is_uploaded_file($_FILES['file']['name'])){ 
    $dbhost = 'localhost'; 
    $dbuser = 'root'; 
    $dbpass = ''; 
    $dbname = 'cbt_software'; 
    $link = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error  connecting to mysql server'); 
    mysql_select_db('cbt_software') or die(mysql_error()); 
    //Process the CSV file 
    $handle = fopen($_FILES['file']['name'], "r"); 
    $data = fgetcsv($handle, 1000, ";"); 
    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { 
     $att0 = mysql_real_escape_string($data[0]); 
     $att1 = mysql_real_escape_string($data[1]); 
     $att2 = mysql_real_escape_string($data[2]); 
     $att3 = mysql_real_escape_string($data[3]); 
     $att4 = mysql_real_escape_string($data[4]); 

     $sql = "INSERT INTO `course_reg` (`coursecode`,`coursename`,`coursedescription`,`coursemaster`,`courselevel`)VALUES  ('$att0','$att1','$att2','$att3','$att4')"; 
     mysql_query($sql) or die(mysql_error()); 
    } 
    mysql_close($link); 
    echo "CSV file successfully imported."; 
} 
else{ 
    die("You shouldn't be here"); 
} 
?> 

에서 PHP로 수행하고 내가 코드를 변조 후에는 CSV 파일이야을 recognicing되지 싶다. 적절한 권한이있는 경우

+0

업로드 한 파일이 CSV 파일이 아닌 Excel 스프레드 시트인지 테스트하는 것으로 보입니다. 해당 검사를 건너 뛰거나 ".csv"로 끝나는 파일 이름을 확인하십시오 (물론 CSV 파일이 아님). –

+0

또한 fopen() 호출이 성공했는지 확인하지 않았습니다. –

+0

또한 잘못된 파일 이름을보고있는 것처럼 보입니다. - $ _FILES [ 'file'] [ 'name']은 클라이언트가 제공 한 이름입니다. $ _FILES [ 'file'] [ 'tmp_name'] for 업로드 된 임시 파일이 서버에 저장된 파일 이름. ('파일'이 파일 입력 상자의 이름으로 바뀌 었습니다.) –

답변

3

, 당신은 LOAD DATA INFILE 명령으로 MySQL을 그렇게 직접 할 http://dev.mysql.com/doc/refman/4.1/en/load-data.html 또는 mysqlimport 유틸리티를 참조 두 방법은 데이터의 이동해야 할 열을 지정 할 수 있습니다 http://dev.mysql.com/doc/refman/4.1/en/mysqlimport.html

볼 수 있습니다 예를 들어 :

LOAD DATA INFILE 'myfile.txt' INTO TABLE 'mytable' (col1, col2, col3, ...)

또는

mysqlimport --columns='col1,col2,...' tablename.csv

PHP에서 수행하려는 경우 CSV 파일의 각 행을 읽고 해당 열의 이름을 지정하는 적절한 SQL INSERT 쿼리를 실행할 수 있어야합니다 (MySQL에서 직접 수행하는 것보다 효율적이지는 않지만).

편집 : 당신이 지금까지 시도한 것을 언급하지 않았거나 어렵다고 판단한 내용을 추가해야합니다. 만약 당신이 뭔가 특별한 것에 매달려 있다면, 그 일을하는 법에 대한 제안을 찾는 것이 아니라, 그렇게 말하기 위해 질문을 업데이트하십시오.

+0

PHP로 입력 해주세요. –

+2

그래, 뭐 해봤 어? 무슨 문제 있니? 아니면 코드를 스푼으로 먹고 싶습니까? –

+0

Av 님이 내 질문을 새로운 방법으로 업데이트했습니다. –

관련 문제