我正在学习触发器和事件,并且遇到以下问题:
我创建了一个触发器,当在表updated_movie
中进行更新时,该触发器将数据插入到名为movie
的表中。
我还想创建一个每天上午11:30执行的事件,该事件将创建一个文本文件,其中包含表updated_movie
中的一些数据。到目前为止,我已经做到了:
delimiter !!
drop event if exists createFile !!
create event createFile on schedule at "11:30"
do begin
declare path varchar(255) default "/Users/Shared/BDD/L19/";
declare nameFile varchar(255) default curdate();
declare done int default 0;
declare t varchar(255);
-- creation of the text file?
declare c cursor for select title from updated_movie;
declare continue handler for not found set done = 1;
open c;
l:loop
fetch c into t;
if done = 1 then
leave l;
end if;
call copyIntoFile(t, nameFile);
end loop l;
end!!
delimiter ;
这是我每天都要执行的事件。如何在事件中声明的路径中创建一个文本文件,且其文件名与声明的变量nameFile
相同?
此外,过程copyIntoFile
到目前为止看起来像这样:
delimiter !!
drop procedure if exists copyIntoFile !!
create procedure copyIntoFile(in str varchar(255), in fileName varchar(255)
begin
-- Copy into the text file?
end !!
delimiter ;
如何做到这一点,以便可以在文本字段中插入一些数据?
如果您想知道,表updated_movie
只有一个varchar(255)
字段。
答案 0 :(得分:0)
CREATE EVENT createFile
ON SCHEDULE
EVERY 1 DAY
STARTS CURRENT_DATE + INTERVAL '11:30' HOUR_MINUTE
ENABLE
DO
SELECT *
INTO OUTFILE 'drive:\\folder\\filename.ext'
FROM updated_movie
WHERE created_at >= NOW() - INTERVAL 1 DAY;
修改条件,输出表达式,并在需要时添加导出规范。
检查secure_file_priv
设置和相关设置,并据此证明目的地是否合理。需要文件特权。
PS。 BEGIN-END,DELIMITER等-多余。