在mysql存储过程中使用prepare的问题
场景:将从文件导入mysql数据库的语句写成存储过程,将表名作为变量,以导入的文件名来定义表名,实现的关键语句如下:
IF v_fileName='aaa.csv' THEN
SET @v_table='tab_1';
ELSE
...
END IF;
SET @uploadString= CONCAT(
"LOAD DATA INFILE V_fileName
INTO TABLE ",@v_table,"
CHARACTER SET utf8
FIELDS TERMINATED BY \',\'
OPTIONALLY ENCLOSED BY \'\"\'
LINES TERMINATED BY \'\\r\\n\';"
);
PREPARE uploadString FROM @uploadString;
EXECUTE uploadString;
DEALLOCATE PREPARE uploadString;
执行后得到如下报错信息:
Procedure execution failed
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED B' at line 3
但是单独调试SELECT CONCAT("...")可以得出
LOAD DATA INFILE 'aaa.csv'
INTO TABLE tab_1
CHARACTER SET utf8
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';
的结果。
mysql版本:5.6.21
请问是哪里写错了,请大神们给一个范例,感激不尽。