我使用以下LOAD DATA LOCAL INFILE查询从文件中读取数据并将其插入表中。一切都很好。但是,我需要修改查询以支持一个额外的要求。
我需要在数据中添加一个额外的列。基本上我的原始数据不包括日期字段,我需要包含一个列,我可以在其中添加导入数据的日期。该文件将每天自动导入一次,我需要将该日期添加到数据中。
使用LOAD DATA LOCAL INFILE时,有没有办法添加数据列?我可以轻松捕捉到今天的日期,但我不知道如何将其添加到下面的查询中。
$insert_query = LOAD DATA LOCAL INFILE 'C:/mydata.csv'
INSERT INTO TABLE myTable
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(Column1,Column2,Column3,Column4);
$db->setQuery($insert_query);
$res = $db->query();
任何建议都将不胜感激!!!谢谢!
答案 0 :(得分:11)
您可以在查询末尾添加SET
子句,例如
LOAD DATA LOCAL INFILE 'C:/mydata.csv'
INSERT INTO TABLE myTable
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(Column1,Column2,Column3,Column4)
SET datetime = NOW();
答案 1 :(得分:5)
不是将此字段添加到查询中,而是将其添加到表中更容易:
ALTER TABLE myTable
ADD COLUMN datetime_entered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
然后,任何插入都会自动显示输入记录的时间戳。