优化字符串拼接与不分页导出

This commit is contained in:
xief 2022-01-18 16:17:00 +08:00
parent d2697baf37
commit c0c17abea1

View File

@ -152,7 +152,14 @@ namespace Chenfeng.MES.Archiver.Commands
var valString = new StringBuilder(); 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) if (columnString.Length == 0)
{ {
@ -166,32 +173,38 @@ namespace Chenfeng.MES.Archiver.Commands
while (reader.Read()) while (reader.Read())
{ {
var row = new List<object>(); //var row = new List<object>();
valString.Append('(');
for (int i = 0; i < reader.FieldCount; i++) for (int i = 0; i < reader.FieldCount; i++)
{ {
var val = reader.GetValue(i); var val = reader.GetValue(i);
object newVal;
switch (val) switch (val)
{ {
case bool b: case bool b:
row.Add(b ? 1 : 0); newVal = b ? 1 : 0;
break; break;
case string s: case string s:
row.Add($"'{s}'"); newVal = $"'{s}'";
break; break;
case DateTime dt: case DateTime dt:
row.Add('\'' + dt.ToString("yyyy-MM-dd HH:mm:ss") + '\''); newVal = '\'' + dt.ToString("yyyy-MM-dd HH:mm:ss") + '\'';
break; break;
case byte[] byteList: 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; break;
default: default:
row.Add(val); newVal = val;
break; 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; if (valString.Length == 0) break;
@ -229,7 +242,7 @@ namespace Chenfeng.MES.Archiver.Commands
//streamWriter.Flush(); //streamWriter.Flush();
} }
} }
if (PageSize <= 0) break; // 不分页直接跳出
pageIndex++; pageIndex++;
} }