我想每 15 分钟从数据库检索一次数据。但是,下面的代码不能按我想要的方式工作。即使我已经设置了 cronjob,我也需要手动运行并每次插入密码来检索数据,因为 CSV 文件不会每 15 分钟更新一次。我需要删除旧的 CSV 文件,因为它说它会覆盖旧文件。是否有任何其他代码选项可以将数据从数据库以 CSV 形式检索到 /var/lib/mysql-files ?除了使用 SELECT .. INTO OUTFILES? 之外。下面是我的代码。
use database name;
SELECT * FROM ...
INTO OUTFILE '/var/lib/mysql-files/file_name.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n';
我想要一个可以帮助我将文件从 db 导出到 csv 的代码。
-- select database
USE database_name;
-- build statement dynamically
SET @sql := CONCAT(
'SELECT * FROM ... INTO OUTFILE ''/var/lib/mysql-files/file_name',
DATE_FORMAT(CURRENT_TIMESTAMP, '%Y_%m_%d_%H_%i_%s'),
'.csv'' FIELDS TERMINATED BY '','' ENCLOSED BY ''"'' LINES TERMINATED BY ''\n'';'
);
-- prepare and execute statement
PREPARE stmt FROM @sql;
EXECUTE stmt;
DROP PREPARE stmt;