diff --git a/src/Archiver/Commands/ExportTableCommand.cs b/src/Archiver/Commands/ExportTableCommand.cs index b5f6e4e..4b3c277 100644 --- a/src/Archiver/Commands/ExportTableCommand.cs +++ b/src/Archiver/Commands/ExportTableCommand.cs @@ -152,7 +152,14 @@ namespace Chenfeng.MES.Archiver.Commands var valString = new StringBuilder(); - using (var reader = cmd.ExecuteReader()) + var queryWatch = Stopwatch.StartNew(); + var reader = cmd.ExecuteReader(); + queryWatch.Stop(); + if (queryWatch.ElapsedMilliseconds > 10_000) + { + Print("slow sql:" + sql + ",page:" + pageIndex); + } + using (reader) { if (columnString.Length == 0) { @@ -166,32 +173,38 @@ namespace Chenfeng.MES.Archiver.Commands while (reader.Read()) { - var row = new List(); + //var row = new List(); + valString.Append('('); for (int i = 0; i < reader.FieldCount; i++) { var val = reader.GetValue(i); - + object newVal; switch (val) { case bool b: - row.Add(b ? 1 : 0); + newVal = b ? 1 : 0; break; case string s: - row.Add($"'{s}'"); + newVal = $"'{s}'"; break; case DateTime dt: - row.Add('\'' + dt.ToString("yyyy-MM-dd HH:mm:ss") + '\''); + newVal = '\'' + dt.ToString("yyyy-MM-dd HH:mm:ss") + '\''; break; case byte[] byteList: - row.Add("0x" + string.Concat(byteList.Select(i => i.ToString("X2")))); + newVal = "0x" + string.Concat(byteList.Select(i => i.ToString("X2"))); break; default: - row.Add(val); + newVal = val; break; } - + valString.Append(newVal); + if (i < reader.FieldCount-1) + { + valString.Append(','); + } } - valString.Append($"({string.Join(",", row)}),"); + valString.Append(')'); + //valString.Append($"({string.Join(",", row)}),"); } if (valString.Length == 0) break; @@ -229,7 +242,7 @@ namespace Chenfeng.MES.Archiver.Commands //streamWriter.Flush(); } } - + if (PageSize <= 0) break; // 不分页直接跳出 pageIndex++; }