我一直试图将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,我需要包括终止的'字段'之后的东西,我认为这是打破它。
我相信如果OPTIONALLY ENCLOSED BY '"'
没有包含"
,那么这将按预期运行 - 在"
之后关闭原始CONCAT(
之后的双引号而且'LINES TERMINATED BY '\n'");
的最后一行正在被切断,MySQL也变得混乱了。
还有其他办法吗?
答案 0 :(得分:1)
尝试:
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`;