批量插入資料到sqlserver

來源:互聯網
上載者:User

標籤:

 第一種方法:
Insert
部分資料還ok 批量資料效能問題。
第二種方法:
sqlbulkcopy 方法 主要思想 是在用戶端將資料緩衝到datatable裡面,然後用sqlbulkcopy 一次性將資料插入到資料庫表中
方法如下:

            System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connectionString);            //指定目標資料庫的表名            bcp.DestinationTableName = "resulttable";            //建立資料來源表欄位和目標表中的列之間的映射            bcp.ColumnMappings.Add("sheetname", "sheetname");            bcp.ColumnMappings.Add("meters", "公裡標");            bcp.ColumnMappings.Add("twista", "twista");            //寫入資料庫表 dt 是資料來源DataTable            bcp.WriteToServer(dt);            //關閉SqlBulkCopy執行個體

            bcp.Close(); 
如果主鍵衝突會復原插入操作,所以要麼保證無衝突要麼建暫存資料表! 
第三種方法:
表值參數 tvps 需要先在sql上建立表值參數

--Create DataBasecreate database BulkTestDB;gouse BulkTestDB;go--Create TableCreate table BulkTestTable(Id int primary key,UserName nvarchar(32),Pwd varchar(16))go--Create Table ValuedCREATE TYPE BulkUdt AS TABLE  (Id int,   UserName nvarchar(32),

   Pwd varchar(16)) 

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();    }}


datatable序列化成json
調用jsonnet庫
jsondata = JsonConvert.SerializeObject(dt, new DataTableConverter());

批量插入資料到sqlserver

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.