【发布时间】:2022-09-27 21:41:08
【问题描述】:
直到现在,我一直是一个沉默的读者。 现在我想询问您的专业知识并在这里发布我的第一个问题。
我必须每周通过事件在我的 MariaDB 中完成以下任务:
每周星期六晚上午夜,我想将某个视图的结果保存在 excel 文件 (xlsx) 中。文件名应该是可变的,具体取决于 site_id 和当前时间戳。
将结果保存到文件后,我想用另一个事件清理数据库表,但必须成功完成前一个事件作为启动清理事件的条件。
例如文件名: viewname_[site_id]_timestamp.xlsx
整体周刊_3_01082022.xlsx
这是我到目前为止所拥有的:
事件 1(将结果保存到文件中):
CREATE EVENT overall_weekly
ON SCHEDULE EVERY 1 WEEK
STARTS TRUNCATE(CURRENT_TIMESTAMP) + \'00:00:00\' HOUR_SECONDS
ON COMPLETION PRESERVE
ENABLE
DO
DECLARE @path = char
DECLARE @view = char
DECLARE @site_id = int(3)
DECLARE @timestamp = timestamp
DECLARE @filetype = char(5)
DECLARE @full_filename = char
SET @path = \"/home/reports/\"
SET @view = \"overall_traffic_weekly\"
SET @site_id = 3
SET @timestamp = current_timestamp
SET @filetype = \".xlsx\"
SET @full_filename = CONCAT(@path,@view,@site_id,@timestamp,@filetype)
SELECT * FROM
(
SELECT \'Column_name_1\',\'Column_name2\', ...
UNION ALL
(
SELECT * FROM overall_weekly
WHERE site_id = 3
)
) resulting_set
INTO OUTFILE @full_filename
FIELDS TERMINATED BY \';\'
OPTIONALLY ENCLOSED BY \'\"\'
LINES TERMINATED BY \'/n\';
事件 2(清理):
事件 1 必须成功完成,事件 2 才能开始。 如果事件 1 以错误结束,则不得开始清理。
CREATE EVENT cleanup
ON SCHEDULE EVERY 1 WEEK
STARTS TRUNCATE(CURRENT_TIMESTAMP) + \'03:00:00\' HOUR_SECONDS
ON COMPLETION PRESERVE
ENABLE
DO
TRUNCATE sourcetable1,
TRUNCATE Sourcetable2
;
非常感谢您的阅读。
标签: sql variables mariadb recurring-events select-into-outfile