实际应用场景中,有时会需要把一批数据导入数据库。这批数据可能来源于另一个数据源。比较常规的做法是先读取到dataset,然后跑一个循环,每一行拼一句insert into语句,执行之。用过的人会知道,这种导入数据的方法效率十分低下。那么,有没有什么更好的方法呢?答案是有的。使用System.Data.SqlClient.SqlBulkCopy类。我觉得这个应该是在使用sql server资源管理器时,导入数据时所使用的方法。代码如下:

-----------------------------------------------我是为代码而生的分割线-----------------------------------------------------

private void insertData(DataTable dt)
    {

if (dt.Rows.Count > 0)
        {

     //如果表格有自增字段。需要增加这个字段,并且赋第一行一个初值。所以,请谨慎操作,虽未经测试,但是如果初值重复应该是会报错的。
            dt.Columns.Add("InnerId", Type.GetType("System.Int32"));  
            dt.Rows[0]["InnerId"] = 1;
    //connstr 为连接字符串。
            SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connstr, SqlBulkCopyOptions.UseInternalTransaction);

sqlbulkcopy.DestinationTableName = "tablename";//数据库中的表名
            sqlbulkcopy.WriteToServer(dt);
        }
    }

-----------------------------------------------我是为代码而生的分割线-----------------------------------------------------

这种方法执行效率很高。尤其是数据量大的时候(主要是行数),相当明显。

感觉前10年的编程生涯都白过了呢。这么简洁高效的处理方法刚刚才发现。

sql server之批量数据导入的更多相关文章

  1. SQL Server 2012大数据导入Oracle的解决方案

    在实际工作中需要把SQL Server中的表导入Oracle.之前尝试过直接用SQL Server的DTS进行都没问题.但这次因为数据量在千万级所以报虚拟内存不足.最后通过SQL Server导出tx ...

  2. sql server 与 sql server compact 互相数据导入

    从SQL Server 导出数据到 Sql Compact 使用 Sql Server Compact Tool box 从SQL Server Comapct 导出数据到  Sql Server 使 ...

  3. 用SQL语句将远程SQL Server数据库中表数据导入到本地数据库相应的表中

    一.方法一 访问不同电脑上的数据库(远程访问,只好联好网就一样),如果经常访问或数据量较大,建议用链接服务器方法. 1.创建链接服务器 exec sp_addlinkedserver ‘srv_lnk ...

  4. sql server 中数据库数据导入到另一个库中

    这篇说了sql语句对于备份的数据库进行还原 ,如果数据量大了还是什么问题,发现我的数据丢失了一些,头疼 sql server 备份还原 下面使用的的数据导入来解决这个问题,因为数据量比较大,导出来的脚 ...

  5. 使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历

    原文:使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历 常常遇到需要向SQL Server插入批量数据,然后在存储过程中对这些数据进行进一步处理的情况.存储过 ...

  6. 使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历

    使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历   原文:使用XML向SQL Server 2005批量写入数据——一次有关XML时间格式的折腾经历 常常遇 ...

  7. SQL Server服务器上需要导入Excel数据的必要条件

    SQL Server服务器上需要导入Excel数据,必须安装2007 Office system 驱动程序:数据连接组件,或者Access2010的数据库引擎可再发行程序包,这样就不必在服务器上装Ex ...

  8. ABAP-2-会计凭证批量数据导入本地ACCESS

    ABAP-1-会计凭证批量数据导入本地ACCESS 上一版本出现问题: A.若TXT数据条目超过800万(大概1.3G),则将TXT导入ACCESS过程不成功,ACCESS数据表为空.(Access单 ...

  9. ABAP-1-会计凭证批量数据导入本地ACCESS

    公司会计凭证导入ACCESS数据库,需要发送给审计,原先的方案是采用DEPHI开发的功能(调用函数获取会计凭证信息,然后INSERT到ACCESS数据表),运行速度非常慢,业务方要求对该功能进行优化, ...

随机推荐

  1. tar:文件打包归档

    造冰箱的大熊猫@cnblogs 2018/12/24 1.什么是tar 1.1.tar tar命令将指定的文件.文件夹打包(存储)为一个文件(归档文件,archive file).tar将被归档文件以 ...

  2. Confluence 6.15 锚点(Anchor)宏

    允许你链接到页面的特定部分.有关如何使用锚点的内容,请参考页面 Anchors 页面中的详细内容. Wiki 标记(markup) 示例 宏名称: anchor 宏内容:None. {anchor:h ...

  3. Python excel文件操作,编程练习题实例七十五

    纯文本文件 student.txt为学生信息, 里面的内容(包括花括号)如下所示: { "1":["张三",150,120,100], "2" ...

  4. BZOJ 2959 长跑 (LCT、并查集)

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2959 题解 真是被这题搞得心态大崩--调了7个小时--然而并查集都能写成\(O(n^2) ...

  5. MemoScope.Net

    What is MemoScope.Net ? It's a tool to analyze .Net process memory: it can dump an application's mem ...

  6. WebSocket-java实现

    一.所需jar 二.创建websocket.jsp(注意此页面链接,需要链接到自己的服务) <%@ page language="java" import="jav ...

  7. java使用解压zip文件,文件名乱码解决方案

    File outFileDir = new File(outDir);if (!outFileDir.exists()) { boolean isMakDir = outFileDir.mkdirs( ...

  8. 6.HBase时髦谨慎财会会计

    1.基本概念和原理 2.核心知识点 3.安装部署 4.Hbase开发

  9. js版的虚线框

    要求:实现鼠标点击面板的一个点,拖动到固定的位置,出现虚线框 样图:   具体的代码实现: js文件   <script> window.onload = function(){ docu ...

  10. mysq乱码问题

    不乱码的思想 liunx字符集→linux客户端字符集(例如:ssh)→mysql客户端字符集→mysql服务端字符集→库的字符集→表的字符集→程序字符集统一 mysql表跟库,库跟服务端字符集 li ...