Mysql
使用載入數據本地 infile 將 csv 文件載入到 mysql
我需要一種簡單的方法將 csv 文件從我的電腦載入到數據庫(位於遠端伺服器上)。我正在嘗試使用執行此程式碼的 php 頁面載入文件:
$file = $_FILES['csv']['tmp_name']; $handle = fopen($file,"r"); $name = $_FILES['csv']['name'];
$ import = “LOAD DATA LOCAL INFILE ‘” . $ 姓名 。"’ INTO TABLE temporal_load FIELDS TERMINATED BY ‘,’
可選 ENCLOSED BY ‘"’ LINES TERMINATED BY ‘\n’ IGNORE 1 LINES (num,ticker,company,sector,industry)";
mysql_query($import) 或死(mysql_error());
但是當我在 php 頁面上選擇一個文件並嘗試載入它時,會顯示錯誤消息:
找不到文件“test11-14-15.csv”(錯誤程式碼:2)
我已經查看了變數 mysql.allow_local_infile 是 ON 並且數據庫連接是這樣建立的:
mysql_connect(主機,使用者,密碼,假,128);
該文件不在遠端伺服器上,該文件在我的電腦上,但它應該可以工作,因為我使用的是 LOCAL。
我究竟做錯了什麼???
您的問題在於使用變數 $ name on your LOAD DATA LOCAL INFILE statement, you should use the variable $ 在你的聲明中歸檔..
您的陳述應更改為;
$import = "LOAD DATA LOCAL INFILE '" . $file. "' INTO TABLE temporal_load FIELDS TERMINATED BY ',' optionally ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (num,ticker,company,sector,industry) "; mysql_query($import) or die(mysql_error());
您需要在導入查詢中使用
$_FILES['csv']['tmp_name']
而不是。$name
所以你的 php 函式可能看起來像:
$filename = $_FILES['csv']['tmp_name']; $import = "LOAD DATA LOCAL INFILE '" . $filename . "' INTO TABLE temporal_load FIELDS TERMINATED BY ',' optionally ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 LINES (num,ticker,company,sector,industry) "; mysql_query($import) or die(mysql_error());