c# SQLServer导入大批量数据
说来惭愧,关于批量导入数据,一直采用的是最原始的方式,一条一条插入,或者100条一块批量插入,这种方式,五十步笑百步,并没有明显的性能提升,
昨天在从别的库查询数据到DataTable内存中,然后插入另外一个库的时候,时间慢的要死,区区10W条数据,竟然要执行三分半。。。
声明一下,目标库是SQL Server。
百度了一下,SQLBulk闯入了我的视野,其实以前也了解过这个家伙,不过一直没有应用,
直接上代码。。。
public int SqlBulkInsertForSQLServer(DataTable dt, string destionTable)
{
int ires = 0;
string costtime = "";
SqlBulkCopy bulkCopy = new SqlBulkCopy(ConnectionString);
bulkCopy.DestinationTableName = destionTable;
bulkCopy.BatchSize = dt.Rows.Count;
var watch = CommonHelper.TimerStart(); if (dt != null && dt.Rows.Count != 0)
{
bulkCopy.WriteToServer(dt);
}
bulkCopy.Close();
ires = dt.Rows.Count;
return ires;
}
1.这个地方需要注意的是DataTable列的顺序,要跟目标库的列顺序一直,包括数据库字段类型。。。
2.有的时候报类型不一致,排查的时候发现类型一致,这个时候要去确认一下是不是少加列了,导致跟目标表的字段不一致。
SQL Server库,如果目标表有一个自增列的话,会出现问题,这种情况下建议先建个临时表,将数据导入后 ,再操作临时表插入目标表。
c# SQLServer导入大批量数据的更多相关文章
- sqlserver表中导入大批量数据
背景: 想要往sqlserver数据库中导入大批量数据,使得数据库的备份文件大于几个G. 注意: 导入的数据不能太规范,数据表最好不一致,否则会自动压缩. 解决办法: 1)通过excel导入,可以参考 ...
- sqlserver数据库导入大批量数据
参考: https://www.cnblogs.com/zhangliangzlee/p/3585862.html
- sqlserver 导入excel数据
有的时候需要将excel数据导入到数据库中,这里介绍一下操作方法: 1.可能需要安装sqlserver的插件 [AccessDatabaseEngine],这个可以在网上早,很多. 2.安装插件后,右 ...
- sqlserver导入Excel数据 总是报错:错误 0xc020901c: 数据流任务 1: 输出“Excel 源输出”(55) 上的 输出列“T2”(64) 出错。返回的列状态是:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项
在网络上搜索解决办法,解决办法是把excel导入到access数据库中,再把access数据库导入到sqlsever中,公司机器上不让安装office工具,问了一个同事得到的回答是把数据中很长的那行数 ...
- php读取文件使用redis的pipeline(管道)导入大批量数据
需求:需要做一个后台上传TXT文件,读取其中的内容,然后导入redis库中.要求速度快,并且支持至少10W以上的数据,而内容也就一个字段存类似openid和QQ 传统做法:我一开始做的时候就老套路,遍 ...
- (转)php读取文件使用redis的pipeline导入大批量数据
第一次写博客,哈哈,纯属用来记录一下自己工作中遇到的问题及解决办法. 昨天因为工作的需求,需要做一个后台上传TXT文件,读取其中的内容,然后导入redis库中.要求速度快,并且支持至少10W以上的数据 ...
- SqlServer导入Excel数据
一:创建数据库: CREATE TABLE IndustrialTownTB ( [ID] [NVARCHAR](36) PRIMARY KEY NOT NULL , IndustrialNewCit ...
- mysql导入大批量数据出现MySQL server has gone away的解决方法
因工作需要,需要导入一个200M左右的sql到user库 执行命令 mysql> use user Database changed mysql> source /tmp/user.sql ...
- c# sqlserver 删除大批量数据超时
我做的项目有个功能需要进行批量删除,删除的数据量有4.5W条数据. 通过下面的sql语句删除这么多数据,直接导致结果超时,无法删除数据. ,,,......) 我查了一些资料,可能找的不全,找到了一个 ...
随机推荐
- 用jquery写的图片懒加载
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- es6总结 (五)--函数扩展
- .net EF框架
https://blog.csdn.net/u012235352/article/details/82768897 model first https://blog.csdn.net/u0101783 ...
- Linux内存管理【转】
转自:http://www.cnblogs.com/wuchanming/p/4360264.html 转载:http://www.kerneltravel.net/journal/v/mem.htm ...
- 在4418平台上如何配置GPIO口的状态
硬件 ------------------------------------------------------------------------------------------------- ...
- AC日记——绿色通道 codevs 3342
3342 绿色通道 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description <思远高考绿色通道&g ...
- bitShark对Android版本的支持
bitShark对Android版本的支持 bitShark是一款轻量级的Android数据抓包软件.使用该软件,可以随时随地抓取网络中的各种数据包,并进行各项分析.我们推出的bitShark手机 ...
- k8s之Service资源
1.Service概述 service是kubernetes中最核心的资源对象之一,service和pod之间是通过Label串起来,相同的Service的pod的Label是一样的.同一个servi ...
- mysql中TIMESTAMPDIFF简单记录
1. Syntax TIMESTAMPDIFF(unit,begin,end); 根据单位返回时间差,对于传入的begin和end不需要相同的数据结构,可以存在一个为Date一个DateTime 2 ...
- Life of an Oracle I/O: tracing logical and physical I/O with systemtap
https://db-blog.web.cern.ch/blog/luca-canali/2014-12-life-oracle-io-tracing-logical-and-physical-io- ...