亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > SQL Server批量插入數據案例詳解

SQL Server批量插入數據案例詳解

熱門標簽:實體店地圖標注怎么標 武漢AI電銷機器人 股票配資電銷機器人 南京電銷外呼系統(tǒng)哪家好 地圖標注如何弄全套標 萬利達綜合醫(yī)院地圖標注點 在電子版地圖標注要收費嗎 電銷機器人 深圳 外呼系統(tǒng)會封嗎

在SQL Server 中插入一條數據使用Insert語句,但是如果想要批量插入一堆數據的話,循環(huán)使用Insert不僅效率低,而且會導致SQL一系統(tǒng)性能問題。下面介紹SQL Server支持的兩種批量數據插入方法:Bulk和表值參數(Table-Valued Parameters),高效插入數據。

新建數據庫:

--Create DataBase  
create database BulkTestDB;  
go  
use BulkTestDB;  
go  
--Create Table  
Create table BulkTestTable(  
Id int primary key,  
UserName nvarchar(32),  
Pwd varchar(16))  
go 

一.傳統(tǒng)的INSERT方式

先看下傳統(tǒng)的INSERT方式:一條一條的插入(性能消耗越來越大,速度越來越慢)

        //使用簡單的Insert方法一條條插入 [慢]
        #region [ simpleInsert ]
        static void simpleInsert()
        {
            Console.WriteLine("使用簡單的Insert方法一條條插入");
            Stopwatch sw = new Stopwatch();
            SqlConnection sqlconn = new SqlConnection("server=.;database=BulkTestDB;user=sa;password=123456;");
            SqlCommand sqlcmd = new SqlCommand();
            sqlcmd.CommandText = string.Format("insert into BulkTestTable(Id,UserName,Pwd)values(@p0,@p1,@p2)");
            sqlcmd.Parameters.Add("@p0", SqlDbType.Int);
            sqlcmd.Parameters.Add("@p1", SqlDbType.NVarChar);
            sqlcmd.Parameters.Add("@p2", SqlDbType.NVarChar);
            sqlcmd.CommandType = CommandType.Text;
            sqlcmd.Connection = sqlconn;
            sqlconn.Open();
            try
            {
                //循環(huán)插入1000條數據,每次插入100條,插入10次。  
                for (int multiply = 0; multiply  10; multiply++)
                {
                    for (int count = multiply * 100; count  (multiply + 1) * 100; count++)
                    {
 
                        sqlcmd.Parameters["@p0"].Value = count;
                        sqlcmd.Parameters["@p1"].Value = string.Format("User-{0}", count * multiply);
                        sqlcmd.Parameters["@p2"].Value = string.Format("Pwd-{0}", count * multiply);
                        sw.Start();
                        sqlcmd.ExecuteNonQuery();
                        sw.Stop();
                    }
                    //每插入10萬條數據后,顯示此次插入所用時間  
                    Console.WriteLine(string.Format("Elapsed Time is {0} Milliseconds", sw.ElapsedMilliseconds));
                }
                Console.ReadKey();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        #endregion

循環(huán)插入1000條數據,每次插入100條,插入10次,效率是越來越慢。

二.較快速的Bulk插入方式:

使用使用Bulk插入[ 較快 ]

        //使用Bulk插入的情況 [ 較快 ]
        #region [ 使用Bulk插入的情況 ]
        static void BulkToDB(DataTable dt)
        {
            Stopwatch sw = new Stopwatch();
            SqlConnection sqlconn = new SqlConnection("server=.;database=BulkTestDB;user=sa;password=123456;");
            SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlconn);
            bulkCopy.DestinationTableName = "BulkTestTable";
            bulkCopy.BatchSize = dt.Rows.Count;
            try
            {
                sqlconn.Open();
                if (dt != null  dt.Rows.Count != 0)
                {
                    bulkCopy.WriteToServer(dt);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                sqlconn.Close();
                if (bulkCopy != null)
                {
                    bulkCopy.Close();
                }
            }
        }
        static DataTable GetTableSchema()
        {
            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[] { 
                new DataColumn("Id",typeof(int)),
                new DataColumn("UserName",typeof(string)),
                new DataColumn("Pwd",typeof(string))
            });
            return dt;
        }
        static void BulkInsert()
        {
            Console.WriteLine("使用簡單的Bulk插入的情況");
            Stopwatch sw = new Stopwatch();
            for (int multiply = 0; multiply  10; multiply++)
            {
                DataTable dt = GetTableSchema();
                for (int count = multiply * 100; count  (multiply + 1) * 100; count++)
                {
                    DataRow r = dt.NewRow();
                    r[0] = count;
                    r[1] = string.Format("User-{0}", count * multiply);
                    r[2] = string.Format("Pwd-{0}", count * multiply);
                    dt.Rows.Add(r);
                }
                sw.Start();
                BulkToDB(dt);
                sw.Stop();
                Console.WriteLine(string.Format("Elapsed Time is {0} Milliseconds", sw.ElapsedMilliseconds));
            }
        }
        #endregion

循環(huán)插入1000條數據,每次插入100條,插入10次,效率快了很多。

三.使用簡稱TVPs插入數據

打開sqlserrver,執(zhí)行以下腳本:

--Create Table Valued  
CREATE TYPE BulkUdt AS TABLE  
  (Id int,  
   UserName nvarchar(32),  
   Pwd varchar(16))  

成功后在數據庫中發(fā)現多了BulkUdt的緩存表。

使用簡稱TVPs插入數據

        //使用簡稱TVPs插入數據 [最快]
        #region [ 使用簡稱TVPs插入數據 ]
        static void TbaleValuedToDB(DataTable dt)
        {
            Stopwatch sw = new Stopwatch();
            SqlConnection sqlconn = new SqlConnection("server=.;database=BulkTestDB;user=sa;password=123456;");
            const string TSqlStatement =
                  "insert into BulkTestTable (Id,UserName,Pwd)" +
                  " SELECT nc.Id, nc.UserName,nc.Pwd" +
                  " FROM @NewBulkTestTvp AS nc";
            SqlCommand cmd = new SqlCommand(TSqlStatement, sqlconn);
            SqlParameter catParam = cmd.Parameters.AddWithValue("@NewBulkTestTvp", dt);
            catParam.SqlDbType = SqlDbType.Structured;
            catParam.TypeName = "dbo.BulkUdt";
            try
            {
                sqlconn.Open();
                if (dt != null  dt.Rows.Count != 0)
                {
                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("error>" + ex.Message);
            }
            finally
            {
                sqlconn.Close();
            }
        }
        static void TVPsInsert()
        {
            Console.WriteLine("使用簡稱TVPs插入數據");
            Stopwatch sw = new Stopwatch();
            for (int multiply = 0; multiply  10; multiply++)
            {
                DataTable dt = GetTableSchema();
                for (int count = multiply * 100; count  (multiply + 1) * 100; count++)
                {
                    DataRow r = dt.NewRow();
                    r[0] = count;
                    r[1] = string.Format("User-{0}", count * multiply);
                    r[2] = string.Format("Pwd-{0}", count * multiply);
                    dt.Rows.Add(r);
                }
                sw.Start();
                TbaleValuedToDB(dt);
                sw.Stop();
                Console.WriteLine(string.Format("Elapsed Time is {0} Milliseconds", sw.ElapsedMilliseconds));
            }
            Console.ReadLine();  
        }
        #endregion

循環(huán)插入1000條數據,每次插入100條,插入10次,效率是越來越慢,后面測試,將每次插入的數據量增大,會更大的體現TPVS插入的效率。

到此這篇關于SQL Server批量插入數據案例詳解的文章就介紹到這了,更多相關SQL Server批量插入數據內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • SQL Server 批量插入數據的完美解決方案
  • SQLServer2008存儲過程實現數據插入與更新
  • Python實現讀取SQLServer數據并插入到MongoDB數據庫的方法示例
  • SQLServer中防止并發(fā)插入重復數據的方法詳解
  • 詳解C#批量插入數據到Sqlserver中的四種方式

標簽:濟寧 濟源 臺州 廣東 泰安 武威 汕頭 安徽

巨人網絡通訊聲明:本文標題《SQL Server批量插入數據案例詳解》,本文關鍵詞  SQL,Server,批量,插入,數據,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL Server批量插入數據案例詳解》相關的同類信息!
  • 本頁收集關于SQL Server批量插入數據案例詳解的相關信息資訊供網民參考!
  • 推薦文章
    免费国产一级特黄aa大片在线| 国产伦久视频免费观看视频| 国产91精品露脸国语对白| 韩国三级视频网站| 免费的黄色小视频| 美国一区二区三区| 欧美大片毛片aaa免费看| 日韩在线观看免费| 高清一级片| 国产网站麻豆精品视频| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 成人高清视频免费观看| 欧美另类videosbestsex视频| 日本特黄特色aaa大片免费| 四虎影视库国产精品一区| 黄色免费网站在线| 国产精品免费精品自在线观看| 国产一区国产二区国产三区| 国产不卡在线播放| 成人免费一级毛片在线播放视频| 99久久精品费精品国产一区二区| 欧美α片无限看在线观看免费| 成人a大片高清在线观看| 精品视频一区二区三区| 亚洲 男人 天堂| 国产精品123| 日本特黄一级| 国产视频一区二区在线观看| 久久久久久久免费视频| 四虎影视精品永久免费网站 | 免费的黄色小视频| 黄色福利片| 久久国产精品只做精品| 国产亚洲免费观看| 国产福利免费观看| 免费国产一级特黄aa大片在线| 青青青草影院| 99久久精品费精品国产一区二区| 欧美国产日韩久久久| 91麻豆精品国产自产在线| 亚洲 男人 天堂| 日日日夜夜操| 亚久久伊人精品青青草原2020| 日韩男人天堂| 欧美日本免费| 欧美爱色| 天天色色色| 999精品在线| 在线观看成人网| 亚欧成人毛片一区二区三区四区 | 免费国产一级特黄aa大片在线| 亚洲天堂免费观看| 国产成人啪精品| 亚久久伊人精品青青草原2020| 午夜欧美福利| 日韩男人天堂| 精品在线观看一区| 成人免费观看网欧美片| 欧美国产日韩在线| 精品国产一区二区三区久 | 99久久网站| 可以免费看污视频的网站| 一级女性全黄生活片免费| 你懂的国产精品| a级精品九九九大片免费看| 欧美另类videosbestsex视频| 一级片片| 欧美另类videosbestsex高清| 成人免费观看网欧美片| 九九九国产| 国产91精品一区| 日日日夜夜操| 精品视频在线看| 精品久久久久久中文字幕一区| 国产一区二区精品久久| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 成人免费福利片在线观看| 国产91丝袜高跟系列| 欧美电影免费看大全| 欧美另类videosbestsex视频| 一级片片| 日本特黄特色aaa大片免费| 可以在线看黄的网站| 国产福利免费观看| 成人a级高清视频在线观看| 日韩一级精品视频在线观看| 999久久狠狠免费精品| 国产成人啪精品| 夜夜操天天爽| 精品国产一区二区三区久久久狼| 国产亚洲免费观看| 成人a级高清视频在线观看| 欧美大片毛片aaa免费看| 天天做日日干| 午夜激情视频在线播放| 精品视频免费看| 国产不卡在线播放| 亚洲女初尝黑人巨高清在线观看| 韩国妈妈的朋友在线播放| 日本伦理片网站| 亚洲天堂免费观看| 国产成人精品综合| 夜夜操天天爽| 国产网站在线| 青青青草影院| 999精品在线| 国产高清在线精品一区二区| 99久久网站| 九九免费精品视频| 午夜精品国产自在现线拍| 青青青草影院| 国产网站在线| 可以在线看黄的网站| 91麻豆国产级在线| 国产精品自拍在线| 久久国产一区二区| 亚洲第一页色| 日本在线不卡免费视频一区| 国产91精品一区| 日韩在线观看视频黄| 亚洲 男人 天堂| 欧美a级片免费看| 日韩在线观看免费| 可以免费看污视频的网站| 一级女性大黄生活片免费| 香蕉视频一级| 欧美日本韩国| 成人影视在线观看| 成人影视在线观看| 成人在免费观看视频国产| 欧美1卡一卡二卡三新区| 国产高清视频免费| 欧美激情一区二区三区在线 | 久久国产精品只做精品| 青青久久国产成人免费网站| 青青久久国产成人免费网站| 美女免费精品视频在线观看| 97视频免费在线| 久草免费在线色站| 国产网站麻豆精品视频| 国产网站在线| 999久久狠狠免费精品| 日韩男人天堂| 精品国产一区二区三区国产馆| 精品国产一级毛片| 99久久精品费精品国产一区二区| 国产网站麻豆精品视频| 久久精品免视看国产明星| 午夜激情视频在线播放| 九九精品影院| 国产视频一区二区在线观看| 999久久狠狠免费精品| 国产不卡在线看| 色综合久久天天综合观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 黄视频网站在线观看| 欧美大片a一级毛片视频| 天天做日日干| 中文字幕97| 国产91精品露脸国语对白| 青青青草影院| 可以免费看污视频的网站| 欧美激情在线精品video| 毛片电影网| 国产成a人片在线观看视频| 国产亚洲免费观看| 免费国产在线观看不卡| 成人高清护士在线播放| 99色播| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 九九精品影院| 国产视频久久久| 日韩欧美一二三区| 可以免费看污视频的网站| 欧美激情一区二区三区视频| 麻豆系列 在线视频| 高清一级片| 亚洲第一页色| 国产网站在线| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 99久久精品国产免费| 免费毛片播放| 国产成人精品综合| 欧美α片无限看在线观看免费| a级精品九九九大片免费看| 国产综合成人观看在线| 国产成人啪精品| 精品视频免费看| 99久久精品国产免费| 亚洲女初尝黑人巨高清在线观看| 黄视频网站在线观看| 久久99中文字幕| 精品国产一区二区三区国产馆| 国产a视频| 国产亚洲免费观看| 国产a视频| 精品久久久久久中文| 黄色福利片| 日韩在线观看免费| 成人高清视频免费观看|