加载数据时出现Mysql CONCAT错误

加载数据时出现Mysql CONCAT错误,mysql,sql,variables,concat,Mysql,Sql,Variables,Concat,我正在开发一个sql脚本,将存储在S3存储桶中的.csv文件加载到RDS数据库中。当不使用CONCAT时,LOAD命令工作正常。我使用CONCAT在语句中包含变量。我认为问题在于其中一项或多项条款。为了进行故障排除,我显著缩短了字段。我尝试了几种不同的方法,但似乎无法获得正确的语法 set @s3intotemp = CONCAT(' LOAD DATA FROM S3 PREFIX "`',@workingdir, '`" INTO TABLE `',@rndtable, '` FIELDS

我正在开发一个sql脚本,将存储在S3存储桶中的
.csv
文件加载到RDS数据库中。当不使用
CONCAT
时,
LOAD
命令工作正常。我使用
CONCAT
在语句中包含变量。我认为问题在于其中一项或多项条款。为了进行故障排除,我显著缩短了字段。我尝试了几种不同的方法,但似乎无法获得正确的语法

set @s3intotemp = CONCAT('
LOAD DATA FROM S3 PREFIX "`',@workingdir, '`"
INTO TABLE `',@rndtable, '` 
FIELDS TERMINATED BY ","
ESCAPED BY ""
ENCLOSED BY "\""
LINES TERMINATED BY "\n"
(@col1,
@col2) 
SET customer=@col1,
firstname=@col2;
');
PREPARE stmt from @s3intotemp;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
我得到以下错误:

SQL错误:您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在“”附近(@col1,@col2)在第行设置customer=@col1,firstname=@col2 六,


您需要对字符串中的反斜杠进行转义,以便将其转换为串联的结果

set @s3intotemp = CONCAT('
LOAD DATA FROM S3 PREFIX "`',@workingdir, '`"
INTO TABLE `',@rndtable, '` 
FIELDS TERMINATED BY ","
ESCAPED BY ""
ENCLOSED BY "\\\""
LINES TERMINATED BY "\\n"
(@col1,
@col2) 
SET customer=@col1,
firstname=@col2;
');

这产生了另一个错误。SQL错误:这个命令在准备好的语句协议中还不受支持。我想问题可能是该语句试图将col1和col2中的at符号解释为变量。我尝试了转义\@col1和\@col2,但这也不起作用。我想这意味着您不能使用
加载数据从S3
中获得一份准备好的声明。我相信您对准备好的声明是正确的。所附的\\\是正确的还是应该正确\\