Microsoft SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具,用于将数据从一个表移动到另一个表(表既可以在同一个服务器上,也可以在不同服务器上)。SqlBulkCopy 类允许编写提供类似功能的托管代码解决方案。还有其他将数据加载到 SQL Server 表的方法(例如 INSERT 语句),但相比之下SqlBulkCopy 提供明显的性能优势。

使用 SqlBulkCopy 类只能向 SQL Server 表写入数据。但是,数据源不限于 SQL Server;可以使用任何数据源,只要数据可加载到 DataTable 实例或可使用 IDataReader 实例读取数据。

下面介绍下Demo(批量写入258114条数号码归属地数据)

            //打开选择文档对话框
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "文本类型|*.txt|文本类型|*.csv";//限定打开类型
if (ofd.ShowDialog() == false)
{
return;
}
string fileName = ofd.FileName;
string[] lines = File.ReadAllLines(fileName, Encoding.Default).ToArray();//打开文本,使用指定的格式编码读出所有行,然后关闭
//GetTableCoulmn(lines);
#region 原始代码
int s = System.Environment.TickCount;//记录函数执行开始时间
DataTable table = new DataTable();
//建立列名和导入的文件中的列名对应
table.Columns.Add(new DataColumn("StartNum"));
table.Columns.Add(new DataColumn("TelTypes"));
table.Columns.Add(new DataColumn("City"));
table.Columns.Add(new DataColumn("TelCode"));
for (int i = ; i < lines.Length; i++)
{
//插入行数据
string[] strs = lines[i].Split('\t');//字符串分割
DataRow row = table.NewRow();
row["StartNum"] = strs[];
row["TelTypes"] = strs[].ToString().Trim('"');//消除两边字符
row["City"] = strs[].ToString().Trim('"');
row["TelCode"] = strs[].ToString().Trim('"');
table.Rows.Add(row);
} string connstr = ConfigurationManager.ConnectionStrings["cnnstr"].ConnectionString;
using (SqlConnection cnn = new SqlConnection(connstr))
{
cnn.Open();
SqlBulkCopy copy = new SqlBulkCopy(cnn);
copy.DestinationTableName = "TelephoneFull";//插入目标表数据
copy.ColumnMappings.Add("StartNum", "StartNum");//列名、数据库表字段
copy.ColumnMappings.Add("TelTypes", "TelTypes");
copy.ColumnMappings.Add("City", "TelArea");
copy.ColumnMappings.Add("TelCode", "TelCode");
copy.WriteToServer(table);
}
int j = System.Environment.TickCount;//记录函数执行结束时间
MessageBox.Show("成功写入" + lines.Count() + "条数据,耗时" + (j - s) + "ms");
#endregion

测试后显示

上述

定义 SqlBulkCopy 实例的数据源中的列与该实例的目标表中的列之间的映射。

如果数据源和目标表具有相同的列数,并且数据源中每个源列的序号位置匹配相应目标列的序号位置,则无需 ColumnMappings 集合。但是如果列计数不同,或序号位置不一致,则必须使用 ColumnMappings,以确保将数据复制到正确的列中。

SqlBulkCopy批量写入25万条数据只需3s的更多相关文章

  1. DataTable 快速导入数据库——百万条数据只需几秒

    public void InsertTable(DataTable dt, string TabelName, DataColumnCollection dtColum) { string str = ...

  2. java 批量插入10万条数据

    for (int i = 0; i < 100000; i++) { dbHelper.insert("INSERT aaa(name) Values ('1')"); } ...

  3. 1000万条数据导入mysql

    今天需要将一个含有1000万条数据的文本内容插入到数据库表中,最初自然想到的是使用Insertinto '表名'values(),(),()...这种插入方式,但是发现这种方式对1000万条数据量的情 ...

  4. 极限挑战—C#+ODP 100万条数据导入Oracle数据库仅用不到1秒

    链接地址:http://www.cnblogs.com/armyfai/p/4646213.html 要:在这里我们将看到的是C#中利用ODP实现在Oracle数据库中瞬间导入百万级数据,这对快速批量 ...

  5. 极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)

    原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码) 实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方 ...

  6. C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)

    作者: Aicken(李鸣)  来源: 博客园  发布时间: 2010-09-08 15:00  阅读: 4520 次  推荐: 0                   原文链接   [收藏] 摘要: ...

  7. (转)Python网络爬虫实战:世纪佳缘爬取近6万条数据

    又是一年双十一了,不知道从什么时候开始,双十一从“光棍节”变成了“双十一购物狂欢节”,最后一个属于单身狗的节日也成功被攻陷,成为了情侣们送礼物秀恩爱的节日. 翻着安静到死寂的聊天列表,我忽然惊醒,不行 ...

  8. QTreeView处理大量数据(使用1000万条数据,每次都只是部分刷新)

    如何使QTreeView快速显示1000万条数据,并且内存占用量少呢?这个问题困扰我很久,在网上找了好多相关资料,都没有找到合理的解决方案,今天在这里把我的解决方案提供给朋友们,供大家相互学习. 我开 ...

  9. Mvc+Dapper+存储过程分页10万条数据

    10万条数据采用存储过程分页实现(Mvc+Dapper+存储过程) 有时候大数据量进行查询操作的时候,查询速度很大强度上可以影响用户体验,因此自己简单写了一个demo,简单总结记录一下: 技术:Mvc ...

随机推荐

  1. 为IE单独写CSS的三种方法

    本文由 Kayo Lee 发表,本文链接:http://kayosite.com/the-methods-make-css-only-for-ie.html 因为万恶的 IE 存在各种的不标准,因此, ...

  2. CSS之shasow(阴影)

    参考https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow box-shadow属性向框添加一个或多个阴影.语法先上: box-shad ...

  3. 小菜鸟带着梦想学chromium

    风雨送春归, 飞雪迎春到. 已是悬崖百丈冰, 犹有花枝俏. 俏也不争春, 只把春来报. 待到山花烂漫时, 她在丛中笑. 这首卜算子·咏梅可是应了我的心情了.最近换工作,受到频频打击,面试过程中发现满世 ...

  4. asp.net(c#)网页跳转七种方法小结

    在asp.net下,经常需要页面的跳转,下面是具体的几种方法.跳转页面是大部编辑语言中都会有的,正面我们来分别介绍一下关于.net中response.redirect sever.execute se ...

  5. sql 批量操作(存在的更新,不存在的插入)

    标签: sql 2012-09-06 18:13 2408人阅读 评论(0) 收藏 举报 分类: Sql Server(123) 版权声明:本文为博主原创文章,未经博主允许不得转载. update A ...

  6. 7款HTML5的精美应用教程让你立即爱上HTML5

    1,HTML5/jQuery雷达动画图表图表配置十分简单 分享一款很特别的HTML5图表,它是利用HTML5和jQuery的雷达动画图表,图表数据在初始化的时候带有一定动画. 在线演示 源码下载 2, ...

  7. Linux 内存布局

         本文主要简介在X86体系结构下和在ARM体系结构下,Linux内存布局的概况,力求简单明了,不过多深入概念,多以图示的方式来记忆理解,一图胜万言. Technorati 标签: 内存 布局 ...

  8. Factory_Method

    class Product { public: virtual ~Product() {} ; }; class ProductA : public Product { public: Product ...

  9. 【linux】学习笔记

    2014.06.07 开机无法上网,每次都得 $ sudo ifconfig eth1 up $ sudo dhclient eth1 后面发现原来是网卡没设置开机启动 编辑/etc/sysconfi ...

  10. CLR via C# 线程基础知识读书笔记

    1.线程的开销 a.线程内核对象 b.线程环境块 c.用户模式栈(1MB) d.内核模式栈 f.DLL线程连接和线程分离通知 2.线程的优先级由进程优先级和线程优先级共同组成 3.进程中所有的前台线程 ...