Synchronization code

This commit is contained in:
sunkaixuan
2024-03-21 03:35:20 +08:00
parent b7d3f6cdfe
commit 04b6b388ba
2 changed files with 3 additions and 25 deletions

View File

@@ -44,6 +44,8 @@ namespace SqlSugar
break; break;
case DbType.Oscar: case DbType.Oscar:
break; break;
case DbType.QuestDB:
return new QuestDBFastBuilder(this.entityInfo);
default: default:
break; break;
} }

View File

@@ -33,31 +33,7 @@ namespace SqlSugar
//} //}
public async Task<int> ExecuteBulkCopyAsync(DataTable dt) public async Task<int> ExecuteBulkCopyAsync(DataTable dt)
{ {
List<string> lsColNames = new List<string>(); Check.ExceptionEasy("In the.net framework, use db.Insertable(list).UseParameter().ExecuteCommand() for best insert performance", ".net framework中请使用 db.Insertable(list).UseParameter().ExecuteCommand()方式插入性能最好");
for (int i = 0; i < dt.Columns.Count; i++)
{
lsColNames.Add($"\"{dt.Columns[i].ColumnName}\"");
}
string copyString = $"COPY {dt.TableName} ( {string.Join(",", lsColNames) } ) FROM STDIN (FORMAT BINARY)";
NpgsqlConnection conn = (NpgsqlConnection)this.Context.Ado.Connection;
var columns = this.Context.DbMaintenance.GetColumnInfosByTableName(this.entityInfo.DbTableName);
try
{
var identityColumnInfo = this.entityInfo.Columns.FirstOrDefault(it => it.IsIdentity);
if (identityColumnInfo != null)
{
throw new Exception("PgSql bulkcopy no support identity");
}
BulkCopy(dt, copyString, conn, columns);
}
catch (Exception ex)
{
throw ex;
}
finally
{
base.CloseDb();
}
return await Task.FromResult(dt.Rows.Count); return await Task.FromResult(dt.Rows.Count);
} }