SQL sugar删除自动分表示例

//删除一周前的自动分表

private async Task DelTable()
{
// 获取当前日期和一周前的日期
var now = DateTime.Now;
var oneWeekAgo = now.AddDays(-7);

// 获取所有分表信息
var splitTables = sugar.SplitHelper<Equipment_Day_Data>().GetTables();

// 遍历所有分表
foreach (var table in splitTables)
{
// 解析表名中的日期部分(假设表名格式为 EquipmentDayData_20240101)
if (table.TableName.Contains("_"))
{
var datePart = table.TableName.Split('_').Last();

// 尝试解析日期
if (DateTime.TryParseExact(datePart, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var tableDate))
{
// 如果表日期早于一周前,则删除该表
if (tableDate < oneWeekAgo)
{
// 异步方法中调用同步方法
await Task.Run(() => sugar.DbMaintenance.DropTable(table.TableName));
Console.WriteLine($"已删除表: {table.TableName}");
}
}
}
}
}

posted @ 2025-04-02 15:24  爱吃糖的宝宝  阅读(36)  评论(0)    收藏  举报