Добавьте дополнительный столбец данных при использовании LOAD DATA LOCAL INFILE

Я использую следующий запрос 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 ответа

Вы можете добавить предложение 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();


Вместо добавления этого поля в запрос было бы проще добавить его в таблицу:

ALTER TABLE myTable
 ADD COLUMN datetime_entered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

При любой вставке автоматически будет отмечена отметка времени, когда запись была введена.

licensed under cc by-sa 3.0 with attribution.