我一直在尝试使用加载数据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'。
任何帮助都会受到褒奖......谢谢!
答案 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
}
}