SQL调度查询中的MySQL语法错误
有人能解释为什么MySQL workbench会抱怨语法错误吗SQL调度查询中的MySQL语法错误,mysql,Mysql,有人能解释为什么MySQL workbench会抱怨语法错误吗 声明@fil\u名称,@fil\u路径字符串2错误:意外的“@fil_name”(在文本后缀处)和字符串处(缺少冒号) 选择*从gumcad进入OUTFILE@fil_路径字段,以“,”结尾的行以“\n”结尾在@fil\u路径处出错:意外的“@fil\u路径”(在文本后缀处) 编辑 我刚刚发现,当使用@var时,我不必使用DECLARE。这是我的新剧本: DELIMITER // CREATE EVENT `Export` ON S
声明@fil\u名称,@fil\u路径字符串代码>2错误:意外的“@fil_name”(在文本后缀处)和字符串处(缺少冒号)
选择*从gumcad进入OUTFILE@fil_路径字段,以“,”结尾的行以“\n”结尾代码>在@fil\u路径处出错
:意外的“@fil\u路径”(在文本后缀处)
编辑
我刚刚发现,当使用@var时,我不必使用DECLARE。这是我的新剧本:
DELIMITER //
CREATE EVENT `Export` ON SCHEDULE EVERY 2 SECOND
ON COMPLETION PRESERVE
ENABLE
DO BEGIN
SET @fil_name=CONCAT('GUMCAD-', DATE_FORMAT(now(), '%d%m%y'), '.csv');
SET @fil_path='C:/app/reports/gumcad/';
SET @export_path=CONCAT(@fil_path, @fil_name);
SELECT * FROM gumcad INTO OUTFILE @export_path FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
INSERT INTO imported_reports (imr_est_id, imr_type, imr_create_date, imr_created, imr_record_status, imr_file_path, imr_file_name, imr_created_by)
VALUES (2, GUMCAD, CURDATE(), NOW(), 'approved', @fil_path, @fil_name, 'SHEP');
END
DELIMITER;
但是我在@export\u path
(意外的'@export\u path'(文本后缀))
,有人能解释一下吗
新更新
目前没有更多的错误消息,我能够运行脚本,但现在的一个问题是脚本似乎不是每2秒运行一次
请看一下我修改过的脚本,我使用的是MySQL 5.5:
DELIMITER $$
CREATE EVENT `Export` ON SCHEDULE EVERY 2 SECOND
ON COMPLETION PRESERVE
ENABLE
DO BEGIN
DECLARE fil_name varchar(200);
DECLARE export_path varchar(200);
DECLARE fil_path varchar(200);
SET fil_name=CONCAT('GUMCAD-', DATE_FORMAT(now(), '%d%m%y'), '.csv');
SET fil_path='C:/cellma/reports/gumcad/';
SET export_path=CONCAT(fil_path, fil_name);
SELECT * FROM gumcad INTO OUTFILE "export_path" FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
INSERT INTO imported_reports (imr_est_id, imr_type, imr_create_date, imr_created, imr_record_status, imr_file_path, imr_file_name, imr_created_by)
VALUES (2, GUMCAD, CURDATE(), NOW(), 'approved', @fil_path, @fil_name, 'SHEP');
END $$
尝试更改声明@fil\u名称、@fil\u路径字符串代码>带有声明文件名、文件路径字符串我试过了。但无法解决字符串处缺少冒号的错误。另外,据我所知,MySQL中有两种类型的变量,过程(不带@)和会话特定变量(带@)。每次运行脚本时都会重新初始化过程变量。因此,我需要一个特定于会话的变量。@trungbu n:您可以发布抛出的准确错误堆栈吗?请参阅InThink main。问题是您无法将变量指定为输出文件的路径。请看这里的例子,我修复了它。现在不再显示错误消息。当我运行queryshow events
时,会列出该事件。但它不是每2秒工作一次。。。有关信息,请参阅我的更新
DELIMITER $$
CREATE EVENT `Export` ON SCHEDULE EVERY 2 SECOND
ON COMPLETION PRESERVE
ENABLE
DO BEGIN
DECLARE fil_name varchar(200);
DECLARE export_path varchar(200);
DECLARE fil_path varchar(200);
SET fil_name=CONCAT('GUMCAD-', DATE_FORMAT(now(), '%d%m%y'), '.csv');
SET fil_path='C:/cellma/reports/gumcad/';
SET export_path=CONCAT(fil_path, fil_name);
SELECT * FROM gumcad INTO OUTFILE "export_path" FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
INSERT INTO imported_reports (imr_est_id, imr_type, imr_create_date, imr_created, imr_record_status, imr_file_path, imr_file_name, imr_created_by)
VALUES (2, GUMCAD, CURDATE(), NOW(), 'approved', @fil_path, @fil_name, 'SHEP');
END $$