0

我一直在尝试使用 load data infile 过程将数据从 csv 文件加载到 mysql,尽管由于 set 语句中的未知变量错误,我无法做到这一点。

LOAD DATA LOCAL INFILE 'D:\\Bets\\BD\\tables\\match.csv' 
INTO TABLE `bets`.`match` 
FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' 
LINES TERMINATED BY '\r\n' 
(`idMatch`, `idChampionship`, @date, `homeTeam`, `awayTeam`, `homeTeamGoals`, `awayTeamGoals`, `matchType` );

SET matchDate = STR_TO_DATE(@date, 'YYYY-MM-DD')

要导入的日期字段格式为 2011-08-07。

运行查询时给出的错误是:SQL 错误 (1193):未知系统变量“matchDate”。

任何帮助都会受到欢迎......谢谢!

4

2 回答 2

0

什么SET matchDate时候应该是这样的:

SET matchDate = STR_TO_DATE(@date, '%Y-%m-%d');

代替SET matchDate = STR_TO_DATE(@date, 'YYYY-mm-dd');

您可以在此处阅读MySQL STR_TO_DATE函数的示例。

于 2014-09-04T02:11:27.780 回答
0

我偶然发现了同样的问题。SET 行必须是 LOAD DATA INFILE ... 语句的一部分。在您的代码中,列表达式以分号结尾,分号在 LOAD DATA INFILE 完成后执行 SET 命令。语句完成后,语句中创建的用户变量不再存在。正确的说法如下,

LOAD DATA LOCAL INFILE 'D:\\Bets\\BD\\tables\\match.csv' 
INTO TABLE `bets`.`match` 
FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' 
LINES TERMINATED BY '\r\n' 
(`idMatch`, `idChampionship`, @date, `homeTeam`, 
 `awayTeam`,`homeTeamGoals`, `awayTeamGoals`, `matchType`)
SET matchDate = STR_TO_DATE(@date, 'YYYY-MM-DD');
于 2015-12-31T09:47:33.307 回答