更新迁移规则,使用OrderItem表重建OrderBlockPlanItem和OrderPackageItem
This commit is contained in:
parent
6d281f65c9
commit
1f7213a75c
@ -1,4 +1,4 @@
|
|||||||
// #define USE_TEST_DB // 如果使用测试库运行,则加上USE_TEST_DB预处理器指令
|
// #define FIX_PLAN_ITEM // 测试环境对OrderBlockPlanItem表进行修复时使用
|
||||||
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using MesETL.App;
|
using MesETL.App;
|
||||||
@ -125,19 +125,11 @@ async Task RunProgram()
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#if USE_TEST_DB
|
// 忽略OrderBlockPlanItem
|
||||||
// 测试环境的OrderExtra表没有分区,故按照SharedKey清理
|
case TableNames.OrderBlockPlanItem:
|
||||||
// 清理ShardKey < 24010的
|
|
||||||
case TableNames.OrderExtra:
|
|
||||||
{
|
{
|
||||||
var shardKey = int.Parse(record["ShardKey"].AsSpan()[..4]);
|
return false;
|
||||||
if (shardKey < oldestTimeInt_yyMM)
|
}
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
// 清理(Status != 0 || Deleted = 1) && ID前四位 < 2401的
|
// 清理(Status != 0 || Deleted = 1) && ID前四位 < 2401的
|
||||||
case TableNames.OrderScrapBoard:
|
case TableNames.OrderScrapBoard:
|
||||||
{
|
{
|
||||||
@ -218,6 +210,7 @@ async Task RunProgram()
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#if !FIX_PLAN_ITEM
|
||||||
// 删除PlanID和PackageID列
|
// 删除PlanID和PackageID列
|
||||||
case TableNames.OrderItem:
|
case TableNames.OrderItem:
|
||||||
{
|
{
|
||||||
@ -225,6 +218,7 @@ async Task RunProgram()
|
|||||||
record.RemoveField("PackageID");
|
record.RemoveField("PackageID");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
// 将JsonStr列转换为Data列,添加CompressionType列
|
// 将JsonStr列转换为Data列,添加CompressionType列
|
||||||
case TableNames.OrderModuleExtra:
|
case TableNames.OrderModuleExtra:
|
||||||
{
|
{
|
||||||
@ -302,6 +296,41 @@ async Task RunProgram()
|
|||||||
resultList.Add(orderWaveGroup);
|
resultList.Add(orderWaveGroup);
|
||||||
return resultList;
|
return resultList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 通过OrderItem重建OrderBlockPlanItem表
|
||||||
|
if (record.TableName == TableNames.OrderItem)
|
||||||
|
{
|
||||||
|
#if FIX_PLAN_ITEM
|
||||||
|
record.Ignore = true;
|
||||||
|
#endif
|
||||||
|
var resultList = new List<DataRecord>();
|
||||||
|
record.TryGetField("ID", out var itemId);
|
||||||
|
record.TryGetField("ShardKey", out var shardKey);
|
||||||
|
record.TryGetField("PlanID", out var planId);
|
||||||
|
record.TryGetField("PackageID", out var packageId);
|
||||||
|
record.TryGetField("CompanyID", out var companyId);
|
||||||
|
if(!int.TryParse(planId, out var pid))
|
||||||
|
throw new ApplicationException($"数据发生异常:OrderItem.PlanID,值: {(string.IsNullOrWhiteSpace(planId) ? "NULL" : planId)}");
|
||||||
|
if (pid > 0)
|
||||||
|
{
|
||||||
|
resultList.Add(new DataRecord([itemId, shardKey, planId, companyId],
|
||||||
|
TableNames.OrderBlockPlanItem,
|
||||||
|
["ItemID", "ShardKey", "PlanID", "CompanyID"]
|
||||||
|
));
|
||||||
|
}
|
||||||
|
if(!int.TryParse(packageId, out var pkid))
|
||||||
|
throw new ApplicationException($"数据发生异常:OrderItem.PackageID,值: {(string.IsNullOrWhiteSpace(packageId) ? "NULL" : packageId)}");
|
||||||
|
if(pkid > 0)
|
||||||
|
{
|
||||||
|
resultList.Add(new DataRecord([itemId, shardKey, packageId, companyId],
|
||||||
|
TableNames.OrderPackageItem,
|
||||||
|
[ "ItemID", "ShardKey", "PackageID", "CompanyID" ]
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return ArraySegment<DataRecord>.Empty;
|
return ArraySegment<DataRecord>.Empty;
|
||||||
};
|
};
|
||||||
|
@ -12,7 +12,7 @@ namespace TestProject1;
|
|||||||
public class DatabaseToolBox
|
public class DatabaseToolBox
|
||||||
{
|
{
|
||||||
private readonly ITestOutputHelper _output;
|
private readonly ITestOutputHelper _output;
|
||||||
public const string ConnStr = "Server=localhost;Port=3306;UserId=root;Password=123456;";
|
public const string ConnStr = "Server=192.168.1.245;Port=3306;UserId=root;Password=ruixinjie!@#123;";
|
||||||
|
|
||||||
public DatabaseToolBox(ITestOutputHelper output)
|
public DatabaseToolBox(ITestOutputHelper output)
|
||||||
{
|
{
|
||||||
@ -198,4 +198,27 @@ public class DatabaseToolBox
|
|||||||
}
|
}
|
||||||
await DatabaseHelper.NonQueryAsync(ConnStr, sb.ToString());
|
await DatabaseHelper.NonQueryAsync(ConnStr, sb.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Theory]
|
||||||
|
[InlineData("cferp_test_1")]
|
||||||
|
[InlineData("cferp_test_2")]
|
||||||
|
[InlineData("cferp_test_3")]
|
||||||
|
public async Task AnalyzeAllTable(string database)
|
||||||
|
{
|
||||||
|
var tables = await DatabaseHelper.QueryTableAsync(ConnStr,
|
||||||
|
$"""
|
||||||
|
SELECT TABLE_NAME FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = '{database}';
|
||||||
|
""");
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
sb.AppendLine($"USE `{database}`;");
|
||||||
|
foreach (DataRow row in tables.Tables[0].Rows)
|
||||||
|
{
|
||||||
|
var tableName = row["TABLE_NAME"].ToString();
|
||||||
|
var sql = $"""
|
||||||
|
ANALYZE TABLE `{tableName}`;
|
||||||
|
""";
|
||||||
|
sb.AppendLine(sql);
|
||||||
|
}
|
||||||
|
await DatabaseHelper.NonQueryAsync(ConnStr, sb.ToString());
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user