质量INSERT的问题

Joh*_*nyy 2 c# t-sql sql-server sql-server-2005

我有一组需要插入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 + ");

}
Run Code Online (Sandbox Code Playgroud)

Cha*_*evy 5

使用SQLBulkCopy(System.Data.SqlClient):

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

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

        bulkCopy.WriteToServer(Records);
    }
}
Run Code Online (Sandbox Code Playgroud)

生成的SQL使用BULK INSERTSQL Server 2005及更高版本中提供的命令和功能.

注意:Records必须是类型的DataRow,DataTable或使用IDataReader.