Php 加载数据填充期间时间戳字段未正确更新
我正在使用LOAD data INFILE用测试数据填充MySQL表,并看到我不理解的行为。时间戳列(默认值为CURRENT_timestamp)正在正确更新某些记录,而其他记录似乎是随机更新的,更新时间为0000-00-00:00:00Php 加载数据填充期间时间戳字段未正确更新,php,mysql,Php,Mysql,我正在使用LOAD data INFILE用测试数据填充MySQL表,并看到我不理解的行为。时间戳列(默认值为CURRENT_timestamp)正在正确更新某些记录,而其他记录似乎是随机更新的,更新时间为0000-00-00:00:00 Questions Table Structure: Column Type Null Default Comments Q_ID int(10) No
Questions Table Structure:
Column Type Null Default Comments
Q_ID int(10) No
Clients_ID int(10) No
Question varchar(255) No
。
. 遗漏的其他领域
连接到db后,以下是相关代码行:
// 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
Questions Table Structure:
Column Type Null Default Comments
Q_ID int(10) No
Clients_ID int(10) No
Question varchar(255) No
CSV文件在所有记录中都有一个前导逗号,以指示缺少的Q_ID数据。Q_ID字段是自动递增的,工作正常。CSV行末尾没有时间戳数据,我希望MySQL输入默认值。我试图在CSV中列出的最后一个字段后添加尾随的comas,认为这可能会使提交时间戳字段中添加的数据更加清楚,但这使情况变得更糟,每一条记录都有0000-00-00:00:00
我还尝试了一个修改表的建议,使Submit\u Timestamp在UPDATE CURRENT\u Timestamp时生效,但是没有任何帮助,而且这不是我想要的这个字段的行为,所以我删除了它
我只是注意到了一个模式,虽然它还没有解释给我。获取时间戳的所有0的记录中至少有一个字段周围有双引号,以防止包含的逗号不适当地指示新字段。这并不总是在最后一个字段中(与Submit_Timestamp字段相邻)。CSV是在Microsoft Excel中创建的
哪里出错了?Excel保存到CSV对于包含逗号的字符串数据有问题 通过将分隔符字符更改为数据中不包含的字符,可以轻松解决此问题。我使用了“|”(在键盘上的反斜杠上方) 您还需要更改SQL命令以将此更改合并到分隔符中
$sql=“将数据填充'c:/wamp/www/Q_Sample_01.CSV'加载到以“|”结尾的表格问题字段中”代码>
这很有效