MySQL: 可选地由 '"' 插入 OUTFILE 变量名称

MySQL: OPTIONALLY ENCLOSED BY '"' Breaking INTO OUTFILE Variable Name

我一直在尝试使用可变文件名将 csv 文件正确导出到我的测试文件夹中 -- 我已经接近成功了,但我认为在它起作用之前我已经解决了一个问题。到目前为止,这是代码:

SET @q1 := CONCAT(
"SELECT *
FROM table
INTO OUTFILE '/SQLOut/test"
, DATE_FORMAT(NOW(),'%Y%m%d')
,".csv'"
, "FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'");

PREPARE s1 FROM @q1;
EXECUTE s1;
DROP PREPARE s1;

如您所见,我必须使用 prepared statements 才能使文件名包含今天的日期。那部分有效——但如果我想把它变成 csv,我需要在之后包含 'fields terminated' 东西,我认为这是破坏它的地方。

我相信,如果 OPTIONALLY ENCLOSED BY '"' 不包含 ",这将按预期运行——它后面的双引号在 CONCAT( 之后关闭我原来的 " 'LINES TERMINATED BY '\n'"); 的最后一行被截断,MySQL 变得混乱。

还有其他方法吗?

尝试:

SET @`qry` := CONCAT('
   SELECT *
   FROM `table`
   INTO OUTFILE \'/SQLOut/test', DATE_FORMAT(NOW(), '%Y%m%d'), '.csv\'
   FIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'"\'
   LINES TERMINATED BY \'\n\'
');

PREPARE `stmt` FROM @`qry`;
EXECUTE `stmt`;
DROP PREPARE `stmt`;