如何在SQL中创建.txt文件并将数据插入到其中?

时间:2020-04-01 12:52:13

标签: mysql sql file

我正在学习触发器和事件,并且遇到以下问题:

我创建了一个触发器,当在表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)字段。

1 个答案:

答案 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等-多余。