データの挿入SQL Serverのバルク

使用してシステムを。
使用してSystem.Collections.Genericを。
使用してSystem.ComponentModelを。
使用してSystem.Dataを。
使用System.Data.SqlClientのを。
使用したSystem.Diagnosticsを。
使用System.Drawingを。
使用してSystem.Linqのを。
使用してSystem.Textのを。
使用してのSystem.Windows.Formsを。

名前空間Winフォーム测试插入
{ 
    パブリック 部分 クラスをForm1:フォーム
    { 
        公共のForm1()
        { 
            のInitializeComponent(); 
        } 
        文字列のConnectionString =ストリング .Format(" データソース= {0};データベース= {1}、UID = SA; PWD = 123456 "" 192.168.200.101 "" BulkTestDB " )。
        文字列 ERRO = 文字列.Empty。

        プライベート ボイドのbutton1_Click(オブジェクト送信者、のEventArgs電子)
        { 

            VAR T = MSSQLHelper.TestConnection(アウトERRO、のConnectionString)。
            // inset_1000_data(); 14秒 
            bulk_1000_data()。/// /111.8871总毫秒数

        } 


        公共 のボイドbulk_1000_data()
        { 

            // 条件がデータテーブルに構築されなければならない              
             @ ; VAR DT = 0トップB_ProductCode SELECT * FROM
             // クエリの同じ構造
             // キーがメインデータ5-10に挿入された場合、第二の主キーを挿入する9 -11; 9-11データに挿入されません。 
            データテーブルDT = 新しい新しいデータテーブル(); 
            dt.Columns.AddRange(新しい新規のDataColumn [] {
                 新新のDataColumn(" 同上"typeof演算INT ))、
                 新たな新のDataColumn(" ユーザー名"typeof演算文字列))、
                 // 新しいのDataColumn( "Pwdの"、typeof演算(文字列))
            });
            以下のためにINT iが= 0 ; I < 1000年 ; I ++ 
            { 
                たDataRow R = dt.NewRow()。
                R [ 0 ] = I。
                R [ 1 ] = ストリング .Format(" USER- {0} " 、I)。
              //   R [2] = String.Formatの( "Pwd- {0}"、I)。
                dt.Rows.Add(R)
            } 

            二重 test_time。  // データ5553345の総数は、500万個のデータ 
            System.Diagnostics.Stopwatchウォッチ= 新新System.Diagnostics.Stopwatch(); 
            watch.Start();   // 実行するために、タイムコードの監視を開始
             // ----- ------------------------------------
             // |
             // | 

            BulkToDB(DT); 

            // |
             // |
             // ------------------------------------------- 
            ウォッチ。 STOP();   // 監視停止 
            のTimeSpanのTimeSpan = watch.Elapsedを;   // 派生測定の現在のインスタンスの合計時間取得

            test_timeをTimespan.TotalMilliseconds =; // ミリ秒の総数    
            MessageBox.Show(test_time.ToString()); // ミリ秒111.8871総数

        } 

        公共 ボイドinset_1000_data()
        { 
            ダブル test_time;   // データ5553345の総数、500万データ 
            System.Diagnostics.Stopwatchウォッチ= 新新System.Diagnostics.Stopwatch(); 
            watch.Start();   // 実行するために、タイムコードの監視を開始
             // ------------------ -----------------------
             // |
             // | 

            のためのint型 I = 0; I < 1000年I ++ 
            { 
                StringBuilderのSB = 新規のStringBuilder(); 
                sb.AppendFormat(" USE [BulkTestDB] " )。
                sb.AppendFormat(" INSERT INTO [DBO] [BulkTestTable]。" ); 
                sb.AppendFormat("             ([ID] " ); 
                sb.AppendFormat("[            ユーザー名] " ); 
                sb.AppendFormat("[Pwd            の])" )。 
                SB。 "       VALUES " ); 
                sb.AppendFormat("             ({0} " 、I); 
                sb.AppendFormat("             '名前{0}' " 、I); 
                sb.AppendFormat("「PWD            {0})" 、I)。

                MSSQLHelper.ExecuteNonQuery(sb.ToString()、アウトのConnectionString、ERRO)。

                もし(!ERRO = 文字列.Empty)
                { 
                    MessageBox.Show(ERRO)。
                    休憩; 
                } 
            } 


            // |
            //|
             // ------------------------------------------- 
            watch.Stop( );   // ストップ監視 
            のTimeSpanのTimeSpan = watch.Elapsedを;   //は、測定結果の現在のインスタンスの合計時間取得

            test_time = timespan.TotalMillisecondsを; // ミリ秒の総数    
            MessageBox.Show(test_time.ToString()); // 14659.1165合計ミリ
        } 


        // 使用バルクインサート[速く] 
        #region [挿入利用バルク]
         ボイドBulkToDB(データテーブルDT)
        { 
            ストップウォッチSW = 新しい新しい =ストップウォッチ(); 
            SqlConnectionのsqlconn 新しいSqlConnectionオブジェクト(のConnectionString); 
            SqlBulkCopyバルク・コピー = 新しいSqlBulkCopy(sqlconn)。

            bulkCopy.DestinationTableName = " BulkTestTable "// 表名 
            bulkCopy.BatchSize = dt.Rows.Count。              // 数据量
            のtry 
            { 
                sqlconn.Open(); 
                もし(DT =!ヌル && dt.Rows.Count!= 0 
                { 
                    bulkCopy.WriteToServer(DT)。
                }
            } 
            キャッチ(例外例)
            {
                Console.WriteLineを(ex.Message)。
            } 
            最後に
            { 
                sqlconn.Close()。
                もし(!バルク・コピー= ヌル
                { 
                    bulkCopy.Close(); 
                } 
            } 
        } 
       
        #endregion 

    } 
}
転送HTTPS:// www.cnblogs.com/zoro-zero/p/7743164.html

 

おすすめ

転載: www.cnblogs.com/enych/p/11866690.html