在mysql存储过程中使用prepare的问题

MySql 码拜 8年前 (2016-05-01) 1008次浏览
场景:将从文件导入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
问一下是哪里写错了,请高手们给一个范例,感激不尽。
解决方案

40

应该是不支持 LOAD DATA
http://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html
官网的文档上,受支持的语句中没有LOAD DATA

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明在mysql存储过程中使用prepare的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)