MYSQL自动导出某表数据到EXCEL的方案
由于特殊要求,客户要求,将数据库中的某些数据,每天指定时间自动导出到指定位置。方便其它业务的使用。
首先说下设计思路:因为需求比较简单,打算用MYSQL数据库的函数+事件功能完成。
首先,定义各一个导出EXCEL的函数,因为本函数需要每24小时重复执行,导出文件就采用年月日时分秒命名,以区分每天的导出记录。
示例代码如下:
BEGIN
-- SET @SqlScript= CONCAT("SELECT * INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/", DATE_FORMAT(NOW(), '%Y%m%d%H%i%s'), ".xls' CHARACTER SET gbk FROM `measurement_data_skfer` ;");
-- NEW 增加自定义表头,保存24小时内的数据
SET @SqlScript= CONCAT("SELECT 'ID', '工单号', '设备号', '钢丝', '规格值', '测量值', '结果', '皮带', '规格值', '测量值', '结果','时间' UNION ALL SELECT * FROM `measurement_data_skfer` WHERE Time >=(NOW() - interval 24 hour)
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/", DATE_FORMAT(NOW(), '%Y%m%d%H%i%s'), ".xls' CHARACTER SET gbk ;");
PREPARE Sql_Text FROM @SqlScript;
EXECUTE Sql_Text;
END
然后,定义一个事件,事件的定义代码:
call 函数名
事件定义好计划的规则,样例见下图:
备注:下面为开启MYSQL的事件计划的相关说明资料。
通过下列语句查询event是否开启
show variables like '%sche%';
通过执行下列语句,来开启event_scheduler
set global event_scheduler =1;
还有一种方法开启
set global event_scheduler=on;