Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL如何持续创建唯一的文件来输出?_Mysql_File Io - Fatal编程技术网

MySQL如何持续创建唯一的文件来输出?

MySQL如何持续创建唯一的文件来输出?,mysql,file-io,Mysql,File Io,我有以下存储过程 DELIMITER ## CREATE PROCEDURE exportFile() BEGIN Select * from Sample INTO OUTFILE '~/Sample.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; END ## DELIMITER ; 第一次调用存储过程后,您将得到错误1086(HY000):文件“~/Sample.csv”已经存在 --这是理所当然的 我需要不断地创建新

我有以下存储过程

DELIMITER ##
CREATE PROCEDURE exportFile()
BEGIN

Select * from Sample
INTO OUTFILE '~/Sample.csv'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

END ##
DELIMITER ;
  • 第一次调用存储过程后,您将得到错误1086(HY000):文件“~/Sample.csv”已经存在 --这是理所当然的
  • 我需要不断地创建新文件。(即Sample1.csv、Sample2.csv、Sample3.csv…等等)在每次通话中

问题:我该怎么做?

为什么不在文件中附加时间戳

下面是将时间戳附加到文件的示例:

DELIMITER ##
CREATE PROCEDURE exportFile()
BEGIN

Select * from Sample
INTO OUTFILE CONCAT('~/Sample', CONCAT(DATE_FORMAT( your_date_field, '%d%m%Y') ,'.csv'))
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

END ##
DELIMITER ;

对于调试递归存储过程,我也提出了类似的要求

这对我很有用:

SET @s = CONCAT('SELECT * INTO OUTFILE ',"'", CONCAT('Result',FLOOR(1000+RAND()*9999)),'.txt',"'",' FROM TempTable112');
PREPARE stmt2 FROM @s;
EXECUTE stmt2;
DEALLOCATE PREPARE stmt2;

我使用xampp并在C:\xampp\mysql\data\myfolder获得输出。

mysql不允许将函数或变量用作filename@aleroot我一直在努力做到这一点,但当我尝试使用piotrekkr时,语法出现了一个错误4200。如果您可以使用mysqldump,那么这是最好的方法(imo)将mysqldump与tab选项一起使用:<代码>--字段以=….结尾,--字段以=….括起来,--字段可选地以=….括起来,--字段以=….转义。@piotrekkr您能用上面的示例对我进行一般设置吗。