C++ x天后删除sql表

C++ x天后删除sql表,c++,mysql,sql,c++11,c++14,C++,Mysql,Sql,C++11,C++14,我正在为我的C++系统寻找一种方法,在90天后删除旧的sqls表,我搜索了,但没有找到任何相关内容 我的表格的名称是根据日期生成的,例如20170323 现在,删除SQL表的方法我想不出有什么可以做的假设这些SQL表位于DBMS中,而不是您自己的软件系统中-不要麻烦将该任务纳入您自己的代码中。使用系统工具,例如,并编写适当的几行脚本(例如,在bash、python或perl中)来检查旧表并发出删除它们的命令。这不是一种您应该为自定义代码而烦恼的任务 我把它说成是一个现代C++爱好者:——< /P

我正在为我的C++系统寻找一种方法,在90天后删除旧的sqls表,我搜索了,但没有找到任何相关内容

我的表格的名称是根据日期生成的,例如20170323


现在,删除SQL表的方法我想不出有什么可以做的

假设这些SQL表位于DBMS中,而不是您自己的软件系统中-不要麻烦将该任务纳入您自己的代码中。使用系统工具,例如,并编写适当的几行脚本(例如,在bash、python或perl中)来检查旧表并发出删除它们的命令。这不是一种您应该为自定义代码而烦恼的任务

我把它说成是一个现代C++爱好者:——< /P>


编辑:仔细想想-为什么你甚至有每天的表格?我认为这几乎肯定是一个错误的设计。所有这些可能都需要在同一个表中,有一个额外的日期列,可能还有一些分区或列存储等等。

您可以使用一个SQL作业来实现这一点。假设每天都生成表,您可以有一个从sysobjects表中读取表名的作业。循环并将表名转换为DATETIME,然后从当前日期减去90,并将其与表名所得到的DATEATE时间进行比较。

< P>如果你想C++中的逻辑,并且愿意使用,你可以写一个类似这样的函数:

#include "date.h"
#include <sstream>

void
maybe_remove_table(const std::string& tablename)
{
    using namespace std;
    using namespace std::chrono;
    using namespace date;
    istringstream in{tablename};
    sys_days table_date;
    in >> parse("%Y%m%d", table_date);
    sys_days today = floor<days>(system_clock::now());
    if (table_date < today - days{90})
        remove_table(tablename);
}
#包括“date.h”
#包括
无效的
可能删除表格(const std::string和tablename)
{
使用名称空间std;
使用名称空间std::chrono;
使用名称空间日期;
{tablename}中的istringstream;
系统天数表日期;
在>>分析中(“%Y%m%d”,表\u日期);
今天的系统天数=楼层(系统时钟::现在();
如果(表_日期<今天-天{90})
删除_表(tablename);
}

此函数用于将表名转换为
date::sys\u days
,这是
std::chrono::time\u point
的类型别名。这只是一个粗略的
时间点
。然后它获取当前日期(由UTC定义),并将表的日期与当前日期之前的90天进行比较。

使用MySQL事件调度程序,编写一个使用
信息\u模式的查询。
。因此,这不是免费的编码服务。你必须自己尝试解决这个问题。如果你不能让它工作,发布你尝试过的东西,我们会帮你修复。我考虑过,但是这个工具,我创建的数百人也会使用,所以我正在寻找工具本身的一种方法来在mysql表中进行清理。