Excel批量导数据到SQLServer

         string filepath = @"D:\data.xlsx";

          string strConn = "Provider=Microsoft.Ace.OleDb.12.0;Persist Security Info=False;" + "data source=" +
                           filepath + ";Extended Properties=‘Excel 12.0; HDR=yes; IMEX=2‘";

          OleDbConnection con = new OleDbConnection(strConn);

          string excelsql = "select  * from [data$]";

          OleDbDataAdapter da = new OleDbDataAdapter(excelsql, con);

          DataSet ds = new DataSet();

          da.Fill(ds);

          Console.WriteLine(ds.Tables.Count);

          Console.WriteLine(ds.Tables[0].Rows.Count);

          string conStr =
             "server=.;database=test;uid=sa;pwd=123";

          Stopwatch wt=new Stopwatch();
          wt.Start();

          using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conStr))
          {

              bulkCopy.DestinationTableName = "_Mobile";

              //加入只加入一個列的話,那么就會其他數據庫列都默認為空。

              bulkCopy.ColumnMappings.Add("mobile", "Mobile"); 

              bulkCopy.BulkCopyTimeout = 60 * 20;

              bulkCopy.BatchSize = 100;

              bulkCopy.NotifyAfter = 100;

              bulkCopy.WriteToServer(ds.Tables[0]);

          }
          wt.Stop();

          Console.WriteLine("Time:>>"+wt.ElapsedMilliseconds/1000+"s");
时间: 2024-10-17 03:02:33

Excel批量导数据到SQLServer的相关文章

利用OLEDB+SqlClient实现EXCEL批量导入数据

以下是几个自己写的类 /// <summary> /// 取得Excel对象 /// </summary> /// <param name="strConn">OLEDB连接字符串</param> /// <param name="sql">SQL语句</param> /// <returns></returns> public static DataTable GetE

Excel批量导入数据之数据校验

最近,工作上接到Excel批量导入数据的需求.在这里,小编想分享的是数据校验那些事,至于如何读取Excel数据,大家可以百度下. 一般而言,Excel批量导入数据,我们都会给客户提供一个固定的模板以输入我们期望的数据.然而,客户的操作,我们是无法预料的,他们有可能增加一列或者删除一列,有可能去掉Excel某个字段的输入限制等等. Excel模板,有可能只有一个,有可能若干个.各个模板的数据列,或交叉相同,或存在个性化列. 同一个模板,也许因某列数据的不同,而需要填充不同数据列. ...... 面

利用DataTable快速批量导数据

DataSet ds = new DataSet();            using (SqlConnection conn = new SqlConnection(@"data source=.\sqlxu;initial catalog=NationalUnion20140717;persist security info=True;user id=sa;password=101;MultipleActiveResultSets=True"))            {    

用SqlBulkCopy批量插入数据到SqlServer数据库表中

首先创建一个数据库连接类:SQLHelper using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; namespace insetData { public class SQLHelper { public static readonly string Strconn = "Data

C#_批量插入数据到Sqlserver中的四种方式

先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记录的ID的值然后再进行加1运算要少.而如果存在索引的情况下,每次插入记录都会进行索引重建,这是非常耗性能的.如果表中无可避免的存在索引,我们可以通过先删除索引,然后批量插入,最后再重建索引的方式来提高效率. create database CarSYS;    go    use CarSYS;  

C#实现从EXCEL文件读取数据到SqlServer数据库

用第三方组件:NPOI组件实现 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写. 先创建一个实体类: [Table("Customer") ] public class Customer { [Key] public int Id { get; set; } public

.Net批量插入数据到SQLServer数据库,SqlBulkCopy类批量插入大数据到数据库

批量的的数据导入数据库中,尽量少的访问数据库,高性能的对数据库进行存储. 采用SqlBulkCopy来处理存储数据.SqlBulkCopy存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储到数据库中,而不需要一次一次的向数据库Insert数据. 经过几次实验,百万级别的数据表,也只需几秒时间内就可以完全的存入数据库中,其速度,比传统的Insert into方法不止快很多倍. 下面看代码: /// <summary> /// 批量插入数据 /// </summary> /

sql 批量插入数据到Sqlserver中 效率较高的方法

使用SqlBulk #region 方式二 static void InsertTwo() { Console.WriteLine("使用Bulk插入的实现方式"); Stopwatch sw = new Stopwatch(); DataTable dt = GetTableSchema(); using (SqlConnection conn = new SqlConnection(StrConnMsg)) { SqlBulkCopy bulkCopy = new SqlBulkC

C#使用SqlBulkCopy批量导数据

案例:将数据库数据导入到另一个库 ImportDataUtil: public class ImportDataUtil { const int PAGE_SIZE = 500; private SqlConnection _sourceConn = null; private SqlConnection _descConn = null; public ImportDataUtil(string sourceConnStr,string descConnStr) { _sourceConn =