使用未知的系统变量错误加载数据infile

时间:2013-01-13 14:02:43

标签: mysql csv import load-data-infile date-conversion

我一直在尝试使用加载数据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'。

任何帮助都会受到褒奖......谢谢!

2 个答案:

答案 0 :(得分: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 功能示例,您可以阅读here

答案 1 :(得分:0)

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

function parseArguments(url, data, success, error, dataType) {
  if ($.isFunction(data)) dataType = success, success = data, data = undefined
  if (!$.isFunction(success)) dataType = success, success = undefined
  if (!$.isFunction(error)) dataType = error, error = undefined
  return {
    url: url,
    data: data,
    success: success,
    error:error,
    dataType: dataType
  }
}