SqlBulkCopy实现大容量数据快速插入数据库中
一般情况下,我们手写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实现大容量数据快速插入数据库中的更多相关文章
- SqlBulkCopy将DataTable中的数据批量插入数据库中
#region 使用SqlBulkCopy将DataTable中的数据批量插入数据库中 /// <summary> /// 注意:DataTable中的列需要与数据库表中的列完全一致.// ...
- 【hibernate spring data jpa】执行了save()方法 sql语句也执行了,但是数据并未插入数据库中
执行了save()方法 sql语句也执行了,但是数据并未插入数据库中 解决方法: 是因为执行了save()方法,也执行了sql语句,但是因为使用的是 @Transactional 注解,不是手动去提 ...
- 多线程查询数据,将结果存入到redis中,最后批量从redis中取数据批量插入数据库中【我】
多线程查询数据,将结果存入到redis中,最后批量从redis中取数据批量插入数据库中 package com.xxx.xx.reve.service; import java.util.ArrayL ...
- list转datatable,SqlBulkCopy将DataTable中的数据批量插入数据库
/// <summary> /// 将泛类型集合List类转换成DataTable /// </summary> /// <param name="list&q ...
- mssqlServer大量数据快速插入:SqlBulkCopy
SqlBulkCopy类,为微软的一个大量数据快速插入.直接上代码 表结构: namespace SqlBulkCopy的演示 { using System.Data.SqlClient; publi ...
- 把QQ聊天记录插入数据库中
最近在做毕设,其中一个环节是分析qq聊天记录,在分析之前需要先把qq聊天记录导出,然后存入数据库中,qq聊天记录导出后是文本文档,导出方式: 1.登录qq后,点击任意一个好友,查看与他的聊天记录,点击 ...
- SQL SERVER 使用BULK Insert将txt文件中的数据批量插入表中(1)
1/首先建立数据表 CREATE TABLE BasicMsg( RecvTime FLOAT NOT NULL , --接收时间,不存在时间相同的数据 AA INT NOT NULL, --24位地 ...
- 将Excel上千条数据写入到数据库中
简要说明:因工作需要,需要一张Excel表格中的所有数据导入到数据库中.如下表,当然这只是一部分,一共一千多条. 前期处理: 首先要保证上图中的Excel表格中的数据不能为空,如果有为空的数据,可以稍 ...
- Android学习笔记——保存数据到SQL数据库中(Saving Data in SQL Databases)
知识点: 1.使用SQL Helper创建数据库 2.数据的增删查改(PRDU:Put.Read.Delete.Update) 背景知识: 上篇文章学习了保存文件,今天学习的是保存数据到SQL数据库中 ...
随机推荐
- python test0729.py
#!/usr/env python #-*- coding: utf-8 -*- import urllib import urllib2 import random import requests ...
- XML的序列化和反序列化 详细介绍
为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...
- linux_曝出重大bash安全漏洞及修复方法
日前Linux官方内置Bash中新发现一个非常严重安全漏洞(漏洞参考https://access.redhat.com/security/cve/CVE-2014-6271 ),黑客可以利用该Bas ...
- C#中设计Fluent API
C#中设计Fluent API 我们经常使用的一些框架例如:EF,Automaper,NHibernate等都提供了非常优秀的Fluent API, 这样的API充分利用了VS的智能提示,而且写出来的 ...
- cmd 跟踪路由
cmd 命令 tracert ip 地址 用 来 跟踪路由
- ubuntu12.04管理员账户登录不了桌面,仅仅能客人会话登录
ubuntu12.04管理员账户登录不了桌面,仅仅能客人会话登录 求助!!ubuntu12.04管理员账户登录不了桌面,仅仅能客人会话登录. 登录管理员账户时,输入password后,一直在登录界面循 ...
- jQuery数字加减插件
jQuery数字加减插件 我们在网上购物提交订单时,在网页上一般会有一个选择数量的控件,要求买家选择购买商品的件数,开发者会把该控件做成可以通过点击实现加减等微调操作,当然也可以直接输入数字件数.本文 ...
- Web神器WebStorm 8.0测试版发放(慧都独家)
WebStorm 8.0测试版的发放,标志着WebStorm规划构建的发展成熟. 此次WebStorm 8.0测试版的主要变化是支持高级的AngularJS和集成Spy-js JavaScript跟踪 ...
- Swift初探一
今天安装了一下Xcode6-Beta版,想来体验一下Swift的魅力:安装Swift系统最低版本号为:10.9.3 仅仅看看一点The Swift Programming Language,以下给大家 ...
- C语言运算符表(优先级)
http://www.is.pku.edu.cn/~qzy/c/operator.htm