我目前正在創建一個系統,用於解析和重新格式化幾個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值之後的'增量'。
文件中是否有空行? – Jens
文件中沒有空行,但最後一行以換行符結尾 – locksem
我每次嘗試使用標準函數加載文件時都會出現某種錯誤。因此,我加載文件並將這些值「echo」出來,看看是否一切正常加載。然後運行插入查詢。 – csaw