使用LOAD DATA LOCAL INFILE时添加额外的数据列

时间:2014-04-04 16:42:30

标签: mysql

我使用以下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();

任何建议都将不胜感激!!!谢谢!

2 个答案:

答案 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;

然后,任何插入都会自动显示输​​入记录的时间戳。