整理项目结构
This commit is contained in:
55
MesETL.Clean/Program.cs
Normal file
55
MesETL.Clean/Program.cs
Normal file
@@ -0,0 +1,55 @@
|
||||
using MesETL.Shared.Helper;
|
||||
|
||||
var connStr = GetArg("-s") ?? throw new ApplicationException("未配置数据库连接字符串");
|
||||
var eachLimit = int.Parse(GetArg("-l") ?? "1000");
|
||||
var parallelTask = int.Parse(GetArg("-p") ?? "4");
|
||||
|
||||
var deletionCount = 0;
|
||||
|
||||
Console.WriteLine("Running Deletion...");
|
||||
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
await Task.Delay(5000);
|
||||
Console.WriteLine($"[{DateTime.Now}] DELETE COUNT: {deletionCount}");
|
||||
}
|
||||
});
|
||||
|
||||
await Parallel.ForAsync(0, parallelTask, async (i, token) =>
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
var effectRows = await DatabaseHelper.NonQueryAsync(connStr,
|
||||
$"DELETE FROM `order_data_block` WHERE CompanyID = 0 ORDER BY ID LIMIT {eachLimit};", token);
|
||||
if(effectRows == 0)
|
||||
break;
|
||||
Interlocked.Add(ref deletionCount, effectRows);
|
||||
}
|
||||
});
|
||||
|
||||
Console.WriteLine($"[{DateTime.Now}] DELETE COUNT: {deletionCount}");
|
||||
return;
|
||||
string? GetArg(string instruct)
|
||||
{
|
||||
var idx = Array.IndexOf(args, instruct);
|
||||
if (idx == -1)
|
||||
return null;
|
||||
if (args[idx + 1].StartsWith('-'))
|
||||
throw new ArgumentException("Argument Lost", nameof(instruct));
|
||||
return args[idx + 1];
|
||||
}
|
||||
|
||||
// var match = await DatabaseHelper.QueryTableAsync(connStr,
|
||||
// $"SELECT `ID` FROM `order_data_block` WHERE CompanyID = 0 LIMIT {eachLimit};",
|
||||
// token);
|
||||
// var rows = match.Tables[0].Rows;
|
||||
// if (rows.Count == 0)
|
||||
// return;
|
||||
//
|
||||
// foreach (DataRow row in rows)
|
||||
// {
|
||||
// var id = row["ID"].ToString();
|
||||
// await DatabaseHelper.NonQueryAsync(connStr, $"DELETE FROM `order_data_block` WHERE `ID` = {id}", token);
|
||||
// }
|
Reference in New Issue
Block a user