我正在使用LOAD DATA INFILE填充測試數據的MySQL表並且看到我不明白的行爲。 timestamp列(默認值= CURRENT_TIMESTAMP)正在更新一些記錄,其他人看起來隨機地用YANG 00:00:00更新。時間戳字段在LOAD DATA INFILE期間沒有正確更新
Questions Table Structure:
Column Type Null Default Comments
Q_ID int(10) No
Clients_ID int(10) No
Question varchar(255) No
。 。其他領域遺漏了 。
Submit_Timestamp timestamp No CURRENT_TIMESTAMP
連接到數據庫後,這裏的代碼中的相關行:
// prepare the SQL query for the Questions table
$sql = "LOAD DATA INFILE 'c:/wamp/www/Q_Sample_01.CSV' INTO TABLE Questions FIELDS TERMINATED BY ','";
// submit the query and capture the result
$result = mysqli_query($conn, $sql) or die (mysqli_error($conn));
程序執行和數據與Submit_Timestamp領域外,有時插入到所有領域適當得到正確的結果,有時會得到0000-00-00 00:00:00。
CSV文件在所有記錄中都有一個前導逗號,用於指示缺少的Q_ID數據。 Q_ID字段即Autoincrement正在正常工作。在CSV行的末尾沒有時間戳的數據,我希望MySQL能夠輸入默認值。我試圖在CSV中列出的最後一個字段後面加上尾隨的昏迷,認爲這可能會使得它更加清晰,有數據要添加到Submit_Timestamp字段中,但它讓事情變得更糟,給我的信息是:0000-00-00 00:00:00爲每個記錄。
我也嘗試了一個建議,改變表提交Submit_Timestamp ON UPDATE CURRENT_TIMESTAMP,但它沒有幫助,而不是我想要的這個字段的行爲,所以我刪除它。
我剛剛注意到了一個模式,儘管它還沒有解釋給我。獲取時間戳記全部爲0的記錄至少有一個字段帶有雙引號,以防止包含的逗號不恰當地指示新字段。這並不總是在最後一個字段(與Submit_Timestamp字段相鄰)。 CSV是在Microsoft Excel中創建的。
我哪裏錯了?