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

主頁 > 知識庫 > SQLServer 批量插入數據的兩種方法

SQLServer 批量插入數據的兩種方法

熱門標簽:電銷機器人公司 需要哪些牌照 地圖標注牌 菏澤語音電銷機器人加盟公司 長沙智能外呼系統 湖南電腦外呼系統平臺 知名電銷機器人價格 分享百度地圖標注多個位置 外呼系統改進 廣東防封卡外呼系統原理是什么
運行下面的腳本,建立測試數據庫和表值參數。
復制代碼 代碼如下:

--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
--Create Table Valued
CREATE TYPE BulkUdt AS TABLE
(Id int,
UserName nvarchar(32),
Pwd varchar(16))

下面我們使用最簡單的Insert語句來插入100萬條數據,代碼如下:
復制代碼 代碼如下:

Stopwatch sw = new Stopwatch();

SqlConnection sqlConn = new SqlConnection(
ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString);//連接數據庫

SqlCommand sqlComm = new SqlCommand();
sqlComm.CommandText = string.Format("insert into BulkTestTable(Id,UserName,Pwd)values(@p0,@p1,@p2)");//參數化SQL
sqlComm.Parameters.Add("@p0", SqlDbType.Int);
sqlComm.Parameters.Add("@p1", SqlDbType.NVarChar);
sqlComm.Parameters.Add("@p2", SqlDbType.VarChar);
sqlComm.CommandType = CommandType.Text;
sqlComm.Connection = sqlConn;
sqlConn.Open();
try
{
//循環插入100萬條數據,每次插入10萬條,插入10次。
for (int multiply = 0; multiply 10; multiply++)
{
for (int count = multiply * 100000; count (multiply + 1) * 100000; count++)
{

sqlComm.Parameters["@p0"].Value = count;
sqlComm.Parameters["@p1"].Value = string.Format("User-{0}", count * multiply);
sqlComm.Parameters["@p2"].Value = string.Format("Pwd-{0}", count * multiply);
sw.Start();
sqlComm.ExecuteNonQuery();
sw.Stop();
}
//每插入10萬條數據后,顯示此次插入所用時間
Console.WriteLine(string.Format("Elapsed Time is {0} Milliseconds", sw.ElapsedMilliseconds));
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
sqlConn.Close();
}

Console.ReadLine();

耗時圖如下:

使用Insert語句插入10萬數據的耗時圖

由于運行過慢,才插入10萬條就耗時72390 milliseconds,所以我就手動強行停止了。

下面看一下使用Bulk插入的情況:

bulk方法主要思想是通過在客戶端把數據都緩存在Table中,然后利用SqlBulkCopy一次性把Table中的數據插入到數據庫

代碼如下:

復制代碼 代碼如下:

public static void BulkToDB(DataTable dt)
{
SqlConnection sqlConn = new SqlConnection(
ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString);
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)
{
throw ex;
}
finally
{
sqlConn.Close();
if (bulkCopy != null)
bulkCopy.Close();
}
}

public 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 Main(string[] args)
{
Stopwatch sw = new Stopwatch();
for (int multiply = 0; multiply 10; multiply++)
{
DataTable dt = Bulk.GetTableSchema();
for (int count = multiply * 100000; count (multiply + 1) * 100000; 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();
Bulk.BulkToDB(dt);
sw.Stop();
Console.WriteLine(string.Format("Elapsed Time is {0} Milliseconds", sw.ElapsedMilliseconds));
}

Console.ReadLine();
}

耗時圖如下:
使用Bulk插入100萬數據的耗時圖

可見,使用Bulk后,效率和性能明顯上升。使用Insert插入10萬數據耗時72390,而現在使用Bulk插入100萬數據才耗時17583。

最后再看看使用表值參數的效率,會另你大為驚訝的。

表值參數是SQL Server 2008新特性,簡稱TVPs。對于表值參數不熟悉的朋友,可以參考最新的book online,我也會另外寫一篇關于表值參數的博客,不過此次不對表值參數的概念做過多的介紹。言歸正傳,看代碼:
復制代碼 代碼如下:

public static void TableValuedToDB(DataTable dt)
{
SqlConnection sqlConn = new SqlConnection(
ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString);
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;
//表值參數的名字叫BulkUdt,在上面的建立測試環境的SQL中有。
catParam.TypeName = "dbo.BulkUdt";
try
{
sqlConn.Open();
if (dt != null dt.Rows.Count != 0)
{
cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
sqlConn.Close();
}
}

public 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 Main(string[] args)
{
Stopwatch sw = new Stopwatch();
for (int multiply = 0; multiply 10; multiply++)
{
DataTable dt = TableValued.GetTableSchema();
for (int count = multiply * 100000; count (multiply + 1) * 100000; 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();
TableValued.TableValuedToDB(dt);
sw.Stop();
Console.WriteLine(string.Format("Elapsed Time is {0} Milliseconds", sw.ElapsedMilliseconds));
}

Console.ReadLine();
}

耗時圖如下:

使用表值參數插入100萬數據的耗時圖

比Bulk還快5秒。
此文原創自CSDN TJVictor

您可能感興趣的文章:
  • 詳解C#批量插入數據到Sqlserver中的四種方式
  • C#批量插入數據到Sqlserver中的三種方式
  • c#幾種數據庫的大數據批量插入(SqlServer、Oracle、SQLite和MySql)
  • SQL Server中數據行批量插入腳本的存儲實現
  • SQL Server使用一個語句塊批量插入多條記錄的三種方法
  • SQL Server 批量插入數據的完美解決方案

標簽:美容院 福建 商洛 呼和浩特 珠海 西寧 天水 泉州

巨人網絡通訊聲明:本文標題《SQLServer 批量插入數據的兩種方法》,本文關鍵詞  SQLServer,批量,插入,數據,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQLServer 批量插入數據的兩種方法》相關的同類信息!
  • 本頁收集關于SQLServer 批量插入數據的兩種方法的相關信息資訊供網民參考!
  • 推薦文章
    青青青草影院 | 欧美激情一区二区三区在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 二级特黄绝大片免费视频大片| 黄色福利| 免费国产在线观看| 97视频免费在线| 国产伦精品一区二区三区无广告| 青青青草影院| 国产视频久久久| 欧美激情一区二区三区视频高清| 久久精品免视看国产成人2021| 欧美另类videosbestsex久久| 欧美电影免费| 午夜久久网| 欧美激情一区二区三区在线| 亚洲第一色在线| 黄视频网站在线免费观看| 国产高清视频免费观看| 成人免费网站视频ww| 九九久久国产精品| 日韩中文字幕在线亚洲一区| 国产精品123| 黄色福利片| 精品在线免费播放| 色综合久久久久综合体桃花网| 亚洲第一色在线| 久久精品道一区二区三区| 久久99中文字幕| 亚洲爆爽| 四虎影视久久久| 香蕉视频三级| 精品国产一区二区三区久久久狼| 人人干人人草| 一级毛片视频在线观看| 黄视频网站免费| 一级女性全黄生活片免费| 精品视频在线观看一区二区| 久草免费资源| 美女免费精品视频在线观看| 国产成人欧美一区二区三区的| 日韩在线观看免费| 999久久久免费精品国产牛牛| 欧美激情在线精品video| 成人影院久久久久久影院| 国产成人啪精品| 国产a毛片| 国产91丝袜在线播放0| 91麻豆国产级在线| 韩国三级一区| 一级毛片视频免费| 日本免费看视频| 欧美激情一区二区三区在线| 青青青草影院| 天天做日日干| a级精品九九九大片免费看| 九九精品在线播放| 久久国产精品只做精品| 日本免费区| 九九久久99综合一区二区| 国产综合91天堂亚洲国产| 日日日夜夜操| 99色视频在线| 国产视频网站在线观看| 人人干人人草| 天天做人人爱夜夜爽2020| 免费国产在线观看| 日本在线不卡视频| 国产激情一区二区三区| 午夜欧美福利| 久久久久久久免费视频| 成人高清免费| 九九精品在线| 美女免费黄网站| 天天做人人爱夜夜爽2020毛片| 久久国产精品自由自在| 日日日夜夜操| 欧美一级视| 青青青草影院| 亚洲天堂在线播放| 精品视频一区二区| 欧美爱色| 超级乱淫伦动漫| 成人a大片在线观看| 精品毛片视频| 国产一级强片在线观看| 91麻豆国产级在线| 国产不卡高清在线观看视频| 国产不卡精品一区二区三区| 亚洲精品永久一区| 九九免费精品视频| 国产不卡精品一区二区三区| 免费一级片网站| 国产激情一区二区三区| 欧美a级成人淫片免费看| 四虎影视久久久| 国产一区二区精品久久91| 亚洲精品久久玖玖玖玖| 99久久精品国产高清一区二区| 亚欧视频在线| 午夜久久网| 国产精品免费精品自在线观看| 国产极品白嫩美女在线观看看| 亚洲www美色| 超级乱淫黄漫画免费| 欧美国产日韩久久久| 四虎影视久久久| 欧美大片一区| 精品视频在线看| 韩国三级一区| 国产一区二区精品久| 日韩av东京社区男人的天堂| 中文字幕97| 一级女性大黄生活片免费| 超级乱淫黄漫画免费| 久久精品大片| 九九免费精品视频| 美女免费精品视频在线观看| 欧美激情一区二区三区在线| 久久久久久久久综合影视网| 国产麻豆精品| 亚欧视频在线| 成人免费观看视频| 久草免费在线色站| 色综合久久天天综线观看| 欧美国产日韩一区二区三区| 精品国产一区二区三区免费| 欧美一级视频免费观看| 久久精品人人做人人爽97| 欧美大片a一级毛片视频| 欧美激情一区二区三区在线| 国产网站免费| 亚洲第一色在线| 久久99中文字幕| 中文字幕一区二区三区 精品| 国产美女在线观看| 国产福利免费观看| 日韩免费在线视频| 韩国三级视频在线观看| 日韩专区第一页| 欧美a免费| 91麻豆精品国产自产在线观看一区| 国产综合成人观看在线| 久久99欧美| 国产不卡在线看| 黄视频网站免费| 韩国三级香港三级日本三级la| 久久国产精品自由自在| 日韩专区一区| 97视频免费在线| 青青久久国产成人免费网站| 尤物视频网站在线| 国产不卡精品一区二区三区| 91麻豆国产级在线| 国产成人精品综合久久久| 久久国产精品自线拍免费| 国产麻豆精品高清在线播放| 韩国妈妈的朋友在线播放| 国产伦精品一区二区三区无广告| 青青久久网| 二级特黄绝大片免费视频大片| 国产成人精品在线| 九九久久99综合一区二区| 亚洲精品永久一区| 91麻豆国产级在线| 成人a大片在线观看| 高清一级做a爱过程不卡视频| 精品国产一区二区三区久久久狼| 黄视频网站在线免费观看| 精品久久久久久中文字幕一区| 日韩专区在线播放| 精品视频免费看| 国产视频一区在线| 日韩免费片| 成人免费高清视频| 99热精品一区| 深夜做爰性大片中文| 四虎影视久久| 高清一级做a爱过程不卡视频| 国产综合成人观看在线| 国产不卡精品一区二区三区| 精品视频免费看| 午夜家庭影院| 中文字幕一区二区三区精彩视频 | 国产精品免费久久| 欧美一级视| 久久国产精品自线拍免费| 欧美激情一区二区三区在线| 91麻豆精品国产综合久久久| 日韩av成人| 日日日夜夜操| 97视频免费在线| 亚久久伊人精品青青草原2020| 精品国产一区二区三区国产馆| 精品视频一区二区三区免费| 国产成a人片在线观看视频| 欧美激情一区二区三区中文字幕| 日本伦理片网站| 黄色福利| 国产成人精品影视|