1. 程式人生 > >excel導入sqlserver數據庫大數據量,可每秒控制數量

excel導入sqlserver數據庫大數據量,可每秒控制數量

content 列名 rip containe creat use 提示 導入 null

數據庫代碼
USE [Test] GO /****** Object: Table [dbo].[Table_1] Script Date: 11/07/2017 17:27:29 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Table_1]( [id] [varchar](100) NULL, [NodeId] [varchar](100) NULL, [t_B_NodeID] [varchar](100) NULL, [NodeType] [varchar](100) NULL, [AuthorityCode] [varchar](100) NULL, [NodeName] [varchar](100) NULL, [PageUrl] [varchar](100) NULL, [ActionName] [varchar](100) NULL, [NodeTag] [varchar](100) NULL, [OrderNo] [varchar](100) NULL, [CreateTime] [varchar](100) NULL, [UpdateTime] [varchar](100) NULL, [CreateUserId] [varchar](100) NULL, [UpdateUserId] [varchar](100) NULL, [IsDel] [varchar](100) NULL ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO C# /// <summary> /// Excel導入sql /// </summary> public void ExcelToSQLText() { // block copy to DB from Excel //By xijun, //step 1 create an excel file C:\Inetpub\wwwroot\test.xls , fill cell(1,1) with "Data",cell(1,2) with "name" //step 2 create table named "Data" with 2 column ("data","name") in your DB //there the code below: DateTime t1 = DateTime.Now; Response.Write("<br>start time:" + t1.ToString()); string ExcelFile = @"E:\\test2.xlsx"; //IMEX=1:混合模式 HDR=Yes; 是否讓第一行作為列頭 string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ExcelFile + ";" + "Extended Properties=\"Excel 12.0;HDR=yes;IMEX=1;\""; using (OleDbConnection excelConnection = new OleDbConnection(excelConnectionString)) { excelConnection.Open(); //Getting source data //非空讀入數據 OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", excelConnection); //數據表 //DataSet ds = new DataSet(); //OleDbDataAdapter myData = new OleDbDataAdapter("select * from [Sheet1$]", excelConnection); //myData.Fill(ds, "Sheet1$");//填充數據 // Initialize SqlBulkCopy object using (OleDbDataReader dr = command.ExecuteReader()) { var TEST = (IDataReader)dr; // Copy data to destination string sqlConnectionString = @"Data Source=.;database=Test;user id=sa;pwd="; using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString)) { bulkCopy.DestinationTableName = "Table_1"; // //加入只加入一個列的話,那麽就會其他數據庫列都默認為空。bulkCopy.ColumnMappings.Add("數據源列名", "插入數據表列名"); bulkCopy.ColumnMappings.Add("id", "id"); bulkCopy.ColumnMappings.Add("NodeId", "NodeId"); bulkCopy.ColumnMappings.Add("t_B_NodeID", "t_B_NodeID"); bulkCopy.ColumnMappings.Add("NodeType", "NodeType"); bulkCopy.ColumnMappings.Add("AuthorityCode", "AuthorityCode"); bulkCopy.ColumnMappings.Add("NodeName", "NodeName"); bulkCopy.ColumnMappings.Add("PageUrl", "PageUrl"); bulkCopy.ColumnMappings.Add("ActionName", "ActionName"); bulkCopy.ColumnMappings.Add("NodeTag", "OrderNo"); bulkCopy.ColumnMappings.Add("CreateTime", "CreateTime"); bulkCopy.ColumnMappings.Add("UpdateTime", "UpdateTime"); bulkCopy.ColumnMappings.Add("CreateUserId", "CreateUserId"); bulkCopy.ColumnMappings.Add("UpdateUserId", "UpdateUserId"); bulkCopy.ColumnMappings.Add("IsDel", "IsDel"); //bcp.BatchSize = 100;//每次傳輸的行數 // //bcp.NotifyAfter = 100;//進度提示的行數 bulkCopy.BatchSize = 100; bulkCopy.NotifyAfter = 100; bulkCopy.WriteToServer((IDataReader)dr); } } //Closing connection excelConnection.Close(); } DateTime t2 = DateTime.Now; Response.Write("<br>End time:" + t2.ToString()); Response.Write("<br>use time:" + ((TimeSpan)(t2 - t1)).Milliseconds.ToString() + " Milliseconds"); Response.Write("<br>inser record count :3307"); }

excel導入sqlserver數據庫大數據量,可每秒控制數量