2012-05-15 26 views
1
# download the file off the internet 
    $file = file_get_contents("http://localhost/sample.csv"); 
    $filepath = "C:/xampp/htdocs/test/file/sample.csv"; 
    file_put_contents($filepath, $file); 
# load the data into sample table 
    $pt1 = "LOAD DATA LOCAL INFILE "; 
    $pt2 = "'/C:/xampp/htdocs/test/file/sample.csv' INTO TABLE sample "; 
    $pt3 = "FIELDS TERMINATED BY ',' ENCLOSED BY '\"' "; 
    $pt4 = "LINES TERMINATED BY '\r\n' "; 
    $pt5 = "(col1,col2,col3,col4)"; 
    $sqlquerynew = $pt1.$pt2.$pt3.$pt4.$pt5; 
    mysql_query($sqlquerynew); 

這段代碼適用於非csv(好吧,我用一個文本文件替代了它)。PHP腳本不會將CSV導入到MySQL

在這部分運行之前,我必須創建一個表。該表現在創建,但沒有數據加載。路徑中指出的文件存在。

可能是什麼問題?

感謝

這是一個示例CSV我在網上找到

"REVIEW_DATE","AUTHOR","ISBN","DISCOUNTED_PRICE" 
"1985/01/21","Douglas Adams",0345391802,5.95 
"1990/01/12","Douglas Hofstadter",0465026567,9.95 
     ....... etc 
+1

您是否收到錯誤訊息?你有沒有嘗試刪除標題行?或者在'INTO TABLE sample'後加'IGNORE 1 LINES'。 – Yaniro

+0

@Yaniro謝謝。我沒有顯示任何錯誤消息(在瀏覽器上)。是的,我做到了,它仍然無效。 – user1012451

+1

如果從命令行執行此操作,會發生什麼情況? (我的意思是'mysql'命令提示符) – Yaniro

回答

1

兩個問題

$pt2 = "'/C:/xampp/htdocs/test/file/sample.csv' INTO TABLE sample "; 

在C.

前取下 /

;其次,

$pt5 = "(col1,col2,col3,col4)"; 

確保您具有正確的列名稱。如果您想要導入*所有列,請將其刪除。在你的情況下刪除標題也是一個好主意,因爲刪除$pt5你會成功,但標題行將被添加到表中。