1

我正在制作一个每分钟运行一次的事件,并提取表格上的某些列并创建一个 excel 格式的输出文件

由于我无法覆盖文件,因此我想在文件名上附加时间戳,以便创建唯一的 Excel 文件名。

这是我的活动示例

CREATE EVENT IF NOT EXISTS 'Extract_Users'

ON SCHEDULE EVERY 1 Minute

COMMENT 'Data Extraction' DO SELECT userID, email, id FROM table_one.user_name

INTO OUTFILE 'C:\path\path\Desktop\test\user.xls'
4

2 回答 2

0

感谢 metalfight 让我知道如何处理这个事件。

这是我的问题的答案。这行得通。

分隔符 $$

如果不存在则创建事件Extract_Users

每 1 分钟按计划进行评论“Extract_Users”

开始

SET @sql_stmt := concat("SELECT userID, email, id FROM user_table.user_info INTO OUTFILE C:/path/path/desktop/test/Users-",DATE_FORMAT(now(),'%Y-%m-%d_ %H%i%s'),".xls'");

从@sql_stmt 准备提取;

执行提取;

解除分配准备提取;

结束 $$

分隔符;

于 2013-08-28T07:26:40.250 回答
0

我认为在准备语句的帮助下,您可以实现它。未经测试,但我认为值得一试。

   DELIMITER $$
    CREATE EVENT IF NOT EXISTS 'Extract_Users'
    ON SCHEDULE EVERY 1 Minute 
    COMMENT 'Data Extraction'  
    DO 
    BEGIN
    SET @sql_text = CONCAT("SELECT userID, email, id FROM table_one.user_name INTO OUTFILE INTO OUTFILE 'C:\path\path\Desktop\test\'" , DATE_FORMAT( NOW(), '%Y%m%d') , "user.xls'" ); 
    PREPARE s1 FROM @sql_text; 
    EXECUTE s1; 
    DEALLOCATE PREPARE s1;
    END $$
    DELIMITER ;

希望这会有所帮助。

〜K

于 2013-08-27T09:50:48.290 回答