2015-06-08 68 views
0

我目前正在創建一個系統,用於解析和重新格式化幾個CSV文件,生成一個新的「主」CSV。然後使用LOAD DATA LOCAL INFILE(MySQL版本5.6.24)將該文件導入到MySQL數據庫中。LOAD DATA LOCAL INFILE - 結果錯誤

目前 - 所有的解析/處理髮生在JS/AJAX,然後做一個非常簡單的張貼到一個php文件創建新的csv,然後到另一個php文件處理導入到數據庫。

$thisDate = $_POST['whatDate']; 
$table = "stats"; 
$csv = "dailySalesCSVs/" . $whatDate . "/" . $whatDate . ".csv"; 
$query = "load data local infile '$csv' 
     into table stats 
     character set latin1 
     fields terminated by ',' 
     enclosed by '\"' 
     lines terminated by '\r\n' 
     ignore 1 lines 
     (Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9, Field10, Field11, Field12)"; 



$result = mysqli_query($con, $query); 

在這個新創建的'主'CSV中有728行 - 但是在導入時,將1750行插入表中。儘管在Workbench和MyAdmin中手動運行導入查詢仍然完美。

1750不是728的倍數 - 所以我知道它不可能是導入腳本被觸發多次的情況(我已經用很多測試證實了這一點)。

我已經讀過,當從AJAX觸發LOAD DATA LOCAL INFILE查詢時,可能會發生類似的錯誤 - 但這是我在這個問題上找到的唯一信息。

如果任何人遇到此之前 - 任何指針將不勝感激

UPDATE:----- 所有記錄都被正確輸入兩次 - 儘管第一場(AUTO_INCREMENT ID字段)跳過大量插入正確的第一個728值之後的'增量'。

+0

文件中是否有空行? – Jens

+0

文件中沒有空行,但最後一行以換行符結尾 – locksem

+1

我每次嘗試使用標準函數加載文件時都會出現某種錯誤。因此,我加載文件並將這些值「echo」出來,看看是否一切正常加載。然後運行插入查詢。 – csaw

回答

0

最終,事實證明,這實際上是在嘗試檢查錯誤響應時運行了兩次,並被自動遞增ID中的大跳過所掩蓋。