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}");
}
}
}
}
}
浙公网安备 33010602011771号