2017-05-15 66 views
0

我試圖上傳CSV文件以更新MySQL表。在MySQL DB中加載CSV文件

我已經完成了上傳部分,但是當我嘗試將CS​​V數據插入到數據庫中時,它將不起作用,並且不會顯示任何錯誤。

對我而言,奇怪的是,當我在phpMyAdmin的SQL解釋器中嘗試使用相同的SQL命令確切的時,該命令起作用並且所有行都被插入。

這裏是想以插入的DB行我的代碼的摘錄:

$name= '/tmp/uploaded/tmp.csv'; 
$result= move_uploaded_file($_FILES['CSVfile']['tmp_name'], $name); 
chmod ($name, 0777); 
if (!$result){ 
    echo "Fail while moving file"; 
} 
else{ 
    echo "Success"; 
    //$connect-> query('DELETE from db_name.table_name WHERE 1;'); 
    $req=$connect->query("LOAD DATA INFILE '/tmp/uploaded/tmp.csv' INTO TABLE db_name.table_name 
    FIELDS ESCAPED BY '\\' 
    TERMINATED BY ';' 
    LINES TERMINATED BY '\r\n';"); //<- This command works perfectly on phpMyAdmin SQL interpreter 
    if ($req){ 
     echo "Success"; 
    } 
    else{ 
     echo "Fail with the INSERT"; 
     var_dump($req); //Shows "bool(false)" 
    } 
} 

該文件包含〜16,500行和重量3.14Mo

你有一些想法或解決方案請給我?

謝謝!

+0

其中一個原因可能是,一旦通過http上傳,行可能不會由'\ r \ n'終止。在編寫和修改load命令之前,您可以用'\ n'替換所有的'\ r',只檢查'\ n' –

+0

*它不起作用,並且不會顯示任何錯誤* ...執行*成功*消息回聲?你確定你在phpMyAdmin中運行命令的確切數據庫與你在一般的php中連接的命令是一樣的嗎? – Parfait

+0

實際上,一旦CSV文件上傳到服務器上,我只是將它移動到/ tmp /上傳的目錄中,但我不修改它。但是,我試着只檢查'\ n',並簡單地刪除檢查行尾的行,但它保持失敗...... – toximorph

回答

0

你不能使用'source'命令,然後拖放?

+0

恐怕我不明白。我所做的只是複製/粘貼請求在我的PHP代碼中(在我的文章中),並將其放入phpMyAdmin的解釋器中 – toximorph