gpt4 book ai didi

c# - 大量 INSERT 的问题

转载 作者:行者123 更新时间:2023-11-30 22:35:40 25 4
gpt4 key购买 nike

我有一组对象(存储在链表中)需要插入到 SQL Server 2005 表中。

这里的解决方案非常慢。我有大约 10K 条记录要插入。每隔一段时间我就会停下来,只看到更多的执行完成。

任何人都可以帮助改善这一点吗?

using (SqlConnection dbConnection = new SqlConnection(connectionString))
{
dbConnection.Open();
SqlTransaction dbTrans = dbConnection.BeginTransaction();
SqlCommand cmd = dbConnection.CreateCommand();
cmd.Transaction = dbTrans;
foreach (MyRecord myr in Records)
{
cmd.CommandText = buildInsertionString(MyRecord)
cmd.ExecuteNonQuery();
}
dbTrans.Commit();
dbConnection.Close();
}

public string buildinsertionString(Myrecod myr){
string sqlCommandString = "insert into Table1 values";

string values = "'" + myr.field1 + "',"
+ myr.field2 + ","
+ "'" + myr.field3 + "',"
+ "'" + myr.field4 + "',"
+ "'" + myr.field5 + "',"
+ "'" + myr.field6 + "'";
return sqlCommandString + "(" + values + ");

}

最佳答案

使用SQLBulkCopy (System.Data.SqlClient):

using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();

using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
{
bulkCopy.DestinationTableName = "table";

bulkCopy.WriteToServer(Records);
}
}

生成的 SQL 使用 BULK INSERT SQL Server 2005 及更新版本中的命令和功能。

注意:Records 必须是 DataRowDataTable 类型,或者使用 IDataReader

关于c# - 大量 INSERT 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7380375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com