一般情况下,我们手写sqlhelper类,在此类中定义一个数据插入到数据库的一个方法。将数据库连接密封在using()的语句中。using显示了Idispose接口。可以及时释放数据库连接资源。代码如下:

//以下为方法中语句

using(Sqlconnection conn=new Sqlconnection(constr))//"constr"为连接字符串

{

conn.Open();

using(SqlCommand cmd=conn.CreateCommand())

{

cmd.CommandText=sql;//"sql"为插入数据库操作语句

cmd.ExecuteNonquery();

}

}

但是这样的数据插入操作,面对大批量的数据插入时,所耗费的时间很长。有没有更好的方法能够实现数据的快速插入呢?

此时,微软早已为我们准备好了一个方法,可以实现数据的快速插入。

代码(我的项目的部分代码)如下:

string constr = "Data Source=.;Initial Catalog=ceshi;Integrated Security=true";
            using(SqlConnection conn=new SqlConnection(constr))
            {
                conn.Open();
                DateTime starttime = System.DateTime.Now;
                using(SqlCommand cmd=conn.CreateCommand())
                {
                    OpenFileDialog ofd = new OpenFileDialog();
                    ofd.Filter = "文本文件|*.txt";
                    if (ofd.ShowDialog() == false)
                    {
                        return;
                    }
                    string filename = ofd.FileName;
                    string[] lines = File.ReadLines(filename,Encoding.Default).ToArray();
                    DataTable table = new DataTable();
                    table.Columns.Add("tel_id");
                    table.Columns.Add("area");
                    table.Columns.Add("tel_type");
                    table.Columns.Add("area_tel");
                    for (int i = 1; i < lines.Count(); i++)
                    {
                        string line=lines[i];
                        string[] liness = line.Split('\t');
                        string tel_id = liness[0];
                        string area=liness[1];
                        string tel_type=liness[2];
                        string area_tel = liness[3];
                        DataRow row = table.NewRow();
                        row["tel_id"]=tel_id;
                        row["area"] = area;
                        row["tel_type"] = tel_type;
                        row["area_tel"] = area_tel;
                        table.Rows.Add(row);
                    }
                    using(SqlBulkCopy sbc=new SqlBulkCopy(constr))//SqlBulkCopy是大批量数据复制
                    {

//以下括号中的第二个参数是数据库中表的字段名
                        sbc.DestinationTableName = "Tel";
                        sbc.ColumnMappings.Add("tel_id","tel_id");
                        sbc.ColumnMappings.Add("area", "area");
                        sbc.ColumnMappings.Add("tel_type", "tel_type");
                        sbc.ColumnMappings.Add("area_tel", "area_tel");
                        sbc.WriteToServer(table);
                    }
                    DateTime endtime = System.DateTime.Now;
                    TimeSpan ts = endtime - starttime;
                    double hao = ts.TotalSeconds;
                    MessageBox.Show(hao.ToString());
                }
            }

有兴趣的朋友可以试一下哦!

SqlBulkCopy实现大容量数据快速插入数据库中的更多相关文章

  1. SqlBulkCopy将DataTable中的数据批量插入数据库中

    #region 使用SqlBulkCopy将DataTable中的数据批量插入数据库中 /// <summary> /// 注意:DataTable中的列需要与数据库表中的列完全一致.// ...

  2. 【hibernate spring data jpa】执行了save()方法 sql语句也执行了,但是数据并未插入数据库中

    执行了save()方法  sql语句也执行了,但是数据并未插入数据库中 解决方法: 是因为执行了save()方法,也执行了sql语句,但是因为使用的是 @Transactional 注解,不是手动去提 ...

  3. 多线程查询数据,将结果存入到redis中,最后批量从redis中取数据批量插入数据库中【我】

    多线程查询数据,将结果存入到redis中,最后批量从redis中取数据批量插入数据库中 package com.xxx.xx.reve.service; import java.util.ArrayL ...

  4. list转datatable,SqlBulkCopy将DataTable中的数据批量插入数据库

    /// <summary> /// 将泛类型集合List类转换成DataTable /// </summary> /// <param name="list&q ...

  5. mssqlServer大量数据快速插入:SqlBulkCopy

    SqlBulkCopy类,为微软的一个大量数据快速插入.直接上代码 表结构: namespace SqlBulkCopy的演示 { using System.Data.SqlClient; publi ...

  6. 把QQ聊天记录插入数据库中

    最近在做毕设,其中一个环节是分析qq聊天记录,在分析之前需要先把qq聊天记录导出,然后存入数据库中,qq聊天记录导出后是文本文档,导出方式: 1.登录qq后,点击任意一个好友,查看与他的聊天记录,点击 ...

  7. SQL SERVER 使用BULK Insert将txt文件中的数据批量插入表中(1)

    1/首先建立数据表 CREATE TABLE BasicMsg( RecvTime FLOAT NOT NULL , --接收时间,不存在时间相同的数据 AA INT NOT NULL, --24位地 ...

  8. 将Excel上千条数据写入到数据库中

    简要说明:因工作需要,需要一张Excel表格中的所有数据导入到数据库中.如下表,当然这只是一部分,一共一千多条. 前期处理: 首先要保证上图中的Excel表格中的数据不能为空,如果有为空的数据,可以稍 ...

  9. Android学习笔记——保存数据到SQL数据库中(Saving Data in SQL Databases)

    知识点: 1.使用SQL Helper创建数据库 2.数据的增删查改(PRDU:Put.Read.Delete.Update) 背景知识: 上篇文章学习了保存文件,今天学习的是保存数据到SQL数据库中 ...

随机推荐

  1. java_部署jar

    javaw -ms100m -mx256m -jar MyApp.jar 上面指定了使用最小100M最大256M内存. 4)如果main函数要带参数 java -mss10m -mx300m -jar ...

  2. java OutOfMorryError (replaceAll)

    最近在使用string类中的replaceAll函数时碰到这个错误,由于string长度比较长,文本文档9M多,可以增加jvm的内存大小解决. 下面是一篇对OutOfMorryError错误的一些处理 ...

  3. Swift中文手册 -- The Basics

    原文:Swift中文手册 -- The Basics 基础部分 Swift 是 iOS 和 OS X 应用开发的一门新语言.然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 S ...

  4. C# .NET ASP.NET 其中关系你了解多少

    有些人一直在做这方面..但突然有人来问你这些问题..估计有很多答不上来. 1..NET是一个平台,一个抽象的平台的概念. .NET平台其本身实现的方式其实还是库,抽象层面上来看是一个平台. 个人理解. ...

  5. 几个常用的CSS3样式代码以及不兼容的解决办法

    原文:几个常用的CSS3样式代码以及不兼容的解决办法 border-radius实现圆角效果 CSS3代码: -webkit-border-radius:10px; -moz-border-radiu ...

  6. Performing User-Managed Database-18.4、Restoring Datafiles and Archived Redo Logs

    18.4.Restoring Datafiles and Archived Redo Logs 假定介质故障损坏的一个或多个数据文件,数据文件必须恢复损坏的文件之前恢复. 该位置是不是想恢复原来姿势. ...

  7. IIS服务器 远程发布(Web Deploy)配置 VS2010 开发环境 Windows Server 2008服务器系统

    原文:IIS服务器 远程发布(Web Deploy)配置 VS2010 开发环境 Windows Server 2008服务器系统 asp.net 网站有三种常用的发布方式:分别是拷贝开发机上发布好的 ...

  8. C语言生成2000w行数据

    最近一直抽空学习shell,脚本语言看多了多多少少有些蛋疼不适,所以捡起以前遇到的一个C语言的问题看看. 原先应该是在C++吧关注的一个帖子,楼主为了测试数据库性能需要如下形式的数据要求: 字符串长度 ...

  9. UVA Graph Coloring

    主题如以下: Graph Coloring  You are to write a program that tries to find an optimal coloring for agiven ...

  10. 安装Windows7操作系统 - 初学者系列 - 学习者系列文章

    Windows7是一款不错的操作系统,不过它的销量远没有XP那么大,但是不失为一款好的操作系统.下面就对Windows7操作系统的安装做下介绍. 1.  同样的,BIOS里设置光驱启动,把操作系统盘装 ...