Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 加载带有未知系统变量错误的数据填充_Mysql_Csv_Import_Load Data Infile_Date Conversion - Fatal编程技术网

Mysql 加载带有未知系统变量错误的数据填充

Mysql 加载带有未知系统变量错误的数据填充,mysql,csv,import,load-data-infile,date-conversion,Mysql,Csv,Import,Load Data Infile,Date Conversion,我一直在尝试使用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 '\

我一直在尝试使用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”


任何帮助都将是宝贵的。。。谢谢

设置匹配日期时
应该是这样的:

SET matchDate = STR_TO_DATE(@date, '%Y-%m-%d');
而不是
将matchDate=STR_设置为_DATE(@DATE,'yyyyy-mm-dd')


MySQLSTR_TO_DATE函数的示例您可以阅读。

我偶然发现了相同的问题。设置线必须是加载数据填充的一部分。。。陈述在代码中,列表达式以分号结尾,分号在加载数据填充完成后执行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');

但是,为什么我需要在列名之前使用@?!在mysql文档中从来没有提到过这一点。阅读“用户变量”而不是“系统变量”如果您仔细阅读mysql加载数据填充文档,文档中提到了这一点。这个链接就在那里