加载带有日期的本地数据文件


Load Data Local Infile with Date

我正在尝试通过加载数据本地内联语句插入当前日期和时间。想通过命令插入当前日期和时间。收到以下错误:SQL 语法有错误;检查与您的MySQL服务器版本相对应的手册,了解在第3行的"@Date_Update=date('Y-m-d')"附近使用的正确语法。

这是我的发言。

 $sqlstatement="LOAD DATA LOCAL INFILE '$temp' INTO TABLE contacts 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY ''r' 
IGNORE 1 LINES
    (User_Category, Name, Logon_id, @Date_Update)
    SET ID=@ID, @Date_Update=date('Y-m-d');
    ";

是否可以在加载数据本地文件的情况下设置当前日期?

我认为问题是字段分配错误:

$sqlstatement="LOAD DATA LOCAL INFILE '$temp' INTO TABLE contacts 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY ''r' 
IGNORE 1 LINES
    (User_Category, Name, @Logon_id, @Date_Update)     ◄■■■■■■■■■■■■■■■■
    SET ID=@Logon_id, Date_Update=NOW();               ◄■■■■■■■■■■■■■■■■
    ";

您不会在 SET 子句中分配给@variable。它应包含要分配到的表列,使用 @variable 从 CSV 文件中获取该列。

但是,如果要插入当前日期,则无需访问 CSV 列。

$sqlstatement="LOAD DATA LOCAL INFILE '$temp' INTO TABLE contacts 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY ''r' 
IGNORE 1 LINES
    (User_Category, Name, Logon_id, @Date_Update)
    SET ID=@ID, Date_Update=TODAY();
    ";

顺便说一句,date('Y-m-d')是一个PHP函数,而不是MySQL。用于格式化日期和时间的 MySQL 函数DATE_FORMAT()