2012-08-31 54 views
1

我有這裏的代碼請允許我從CSV文件導入數據到數據庫,現在這是什麼是在插入之前截斷表,我試過之前刪除截斷表,但它不會傳遞數據。我的意思是我如何在這裏修改這段代碼?我只需要它就可以插入數據,而不用清空當前表格!導入CSV到數據庫,插入不截斷表

謝謝..

$deleterecords = "TRUNCATE TABLE imovo"; //empty the table of its current records 
mysql_query($deleterecords); 

//Upload File 
if (isset($_POST['submit'])) { 
    if (is_uploaded_file($_FILES['filename']['tmp_name'])) { 
     echo "<h1>" . "File ". $_FILES['filename']['name'] ." uploaded successfully." . "</h1>"; 
     echo "<h2>Displaying contents:</h2>"; 
     readfile($_FILES['filename']['tmp_name']); 
    } 

    //Import uploaded file to Database 
    $handle = fopen($_FILES['filename']['tmp_name'], "r"); 

    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $import="INSERT into imovo(date,time,location,rbpos_id,mobile_number) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]')"; 

     mysql_query($import) or die(mysql_error()); 
    } 

    fclose($handle); 

    print "Import done"; 

    //view upload form 
}else { 


} 

回答

3

「我已經試過之前刪除將truncate table,但那就不是傳遞數據。」

也許是因爲你有唯一索引並嘗試插入重複記錄。

0

我只是想,你的表有一個唯一的列...所以,如果你不截斷該表不能插入記錄其存在....

所以,你必須做的:

  1. 檢查是否存在記錄

1A)如果爲true ...使用UPDATE

1B)如假..使用INSERT

  1. 同時檢查記錄是否不再在CSV那麼你必須使用DELETE

...

所以你看,它是不是真的簡單處理所有現有記錄

0

您上傳的文件是否包含一些以前上傳的數據? 如果是這樣的話,你知道,你可以使用

INSERT IGNORE into `imovo` 

,或者如果你想更換一些重複的行做更換

REPLACE into `imovo` 

這將代替重複的行根據主鍵或獨特索引

http://dev.mysql.com/doc/refman/5.0/en/replace.html