mssqlServer大量數據快速插入:SqlBulkCopy


SqlBulkCopy類,為微軟的一個大量數據快速插入。直接上代碼

表結構:

 

namespace SqlBulkCopy的演示
{
    using System.Data.SqlClient;

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //string connString = "server=.;database=CrmChat14;uid=sa;pwd=master;";
            string connString = "server=.;database=MyData;Integrated Security=True;";

            //0.0 准備一個DataTable內存表,向這個表中增加10000條數據
            DataTable dt = new DataTable();
            //在dt中一定要按照DestinationTableName對應的表結構來進行創建
            //但是:自增ID,可以不建立
            dt.Columns.Add("dd", typeof(string));

            //構造1W條數據
            int count = 100 * 100;

            for (int i = 0; i < count; i++)
            {
                //根據dt的表結構創建一個同結構的DataRow對象
                DataRow row = dt.NewRow();
                //給row中的dd字段賦值
                row["dd"] = "測試" + i;
                //將row對象添加到內存表dt中
                dt.Rows.Add(row);
            }

            //統計下面代碼的執行時間:
            System.Diagnostics.Stopwatch st = new System.Diagnostics.Stopwatch();
            st.Start();
            //1.0 實例化sqlbulkcopy的對象
            using (SqlBulkCopy copy = new SqlBulkCopy(connString))
            {
                //告訴copy對象按照指定的5000條數據量來進行插入 
                //如果這個數據太龐大的話,一定要加上BatchSize 來分配處理
                copy.BatchSize = 5000;

                //告訴copy將dt中的數據插入到數據庫CrmChat14中的SqlBulkCopyDemo表
                copy.DestinationTableName = "SqlBulkCopyDemo";

                //告訴copy dt內存表中的dd列對應的是SqlBulkCopyDemo表中的BName,他們之間一定要有一個映射
                copy.ColumnMappings.Add("dd", "BName");

                //2.0 將數據批量的插入到db中
                copy.WriteToServer(dt);
            }

            st.Stop();

            MessageBox.Show("插入" + count + "條數據,耗時:" + st.ElapsedMilliseconds + "毫秒");
        }
    }
}

結果:

 SqlBulkCopy的本質,是用的INSERT bulk插入的數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM