Mysql加载数据时CONCAT错误
Mysql CONCAT error when loading data
我正在开发一个 sql 脚本,用于将存储在 S3 存储桶中的 .csv
文件加载到 RDS 数据库中。 LOAD
命令在不使用 CONCAT
时工作得很好。我正在使用 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 Error: 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 '" (@col1, @col2 ) SET customer=@col1, firstname=@col2' at line
6
您需要对字符串中的反斜杠进行转义,以便它们进入串联结果。
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 脚本,用于将存储在 S3 存储桶中的 .csv
文件加载到 RDS 数据库中。 LOAD
命令在不使用 CONCAT
时工作得很好。我正在使用 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 Error: 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 '" (@col1, @col2 ) SET customer=@col1, firstname=@col2' at line 6
您需要对字符串中的反斜杠进行转义,以便它们进入串联结果。
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;
');