gpt4 book ai didi

mysql - 创建 table1 的备份/快照,名称中带有时间戳,然后 select * from table1 into table1.YYYYMMDDHHMM.backup

转载 作者:行者123 更新时间:2023-11-29 15:35:53 24 4
gpt4 key购买 nike

我有一个 table1,每天都会上传数据。源的格式和结构可能不可靠,因此为了避免麻烦和停机,我想每天在上传运行之前拍摄 table1 的快照。我想将备份命名为 table1.YYYYMMDDHHMM.backup。直接变量不起作用,所以我尝试使用准备语句(这对我来说是全新的)。以下是行不通的...一些明智的建议将不胜感激。


set @a = concat('CREATE TABLE `ops_weekly_sla.',@yyyymmdd,'.backup` like `ops_weekly_sla`;');

set @b = concat('SELECT * from `ops_sla_weekly` INTO `ops_weekly_sla.',@yyyymmdd,'.backup`;');

PREPARE stmt from @a;
EXECUTE stmt;

PREPARE stmt from @b;
EXECUTE stmt;

DEALLOCATE PREPARE stmt;


最佳答案

想出了一种稍微不同的方法来做到这一点。本质上,我不用担心命名要启动的备份表,而是在成功填充数据快照后对其进行重命名。

create table backup like ops_weekly_sla;

INSERT INTO backup
select * from ops_weekly_sla;

SET @yyyymmdd = DATE_FORMAT(NOW(), '%Y%m%d%H%i');
SET @a = concat('RENAME TABLE `backup` to `ops_weekly_sla.',@yyyymmdd,'.backup`;');

PREPARE stmt from @a;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

这不仅实现了我的目标,而且额外的功能是它不会干扰我的原始数据插入或行更新的时间戳。/哇!

关于mysql - 创建 table1 的备份/快照,名称中带有时间戳,然后 select * from table1 into table1.YYYYMMDDHHMM.backup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58240436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com