注:转载请标明文章原始出处及作者信息http://www.cnblogs.com/z-huifei/p/7380388.html

前言

OLE DB 是微软的战略性的通向不同的数据源的低级应用程序接口。OLE DB不仅包括微软资助的标准数据接口开放数据库连通性(ODBC)的结构化查询语言(SQL)能力,还具有面向其他非SQL数据类型的通路。OLE DB的存在为用户提供了一种统一的方法来访问所有不同种类的数据源。OLE DB可以在不同的数据源中进行转换。利用OLE DB,客户端的开发人员在进行数据访问时只需把精力集中在很少的一些细节上,而不必弄懂大量不同数据库的访问协议。OLE DB是一套通过COM接口访问数据的ActiveX接口。这个OLE DB接口相当通用,足以提供一种访问数据的统一手段,而不管存储数据所使用的方法如何。同时,OLE DB还允许开发人员继续利用基础数据库技术的优点,而不必为了利用这些优点而把数据移出来。

接口介绍

System.Data.OleDb 下的部分成员(相信读者都很眼熟)

OleDbConnection

 表示到数据源的连接是打开。

OleDbCommand

 表示要对数据源执行的 SQL 语句或存储过程。

OleDbDataReader 

 提供了一种从数据源中读取数据行的只进流。

OleDbDataAdapter

 表示一组数据命令和一个数据库连接,它们用于填充 System.Data.DataSet 和更新数据源。

......

 ......

SqlBulkCopy 允许使用其他源的数据有效地批量加载到 SQL Server 表(这个就是陌生了)

BatchSize

每一批次中的行数。在每一批次结束时,将该批次中的行发送到服务器。

BulkCopyTimeout

 超时之前操作完成所允许的秒数。默认值为 30 秒。值 0 指示没有限制;批量复制将无限期等待。

ColumnMappings

 列映射定义数据源中的列和目标表中的列之间的关系。

DestinationTableName

 目标表的名称。

NotifyAfter

定义在生成通知事件之前要处理的行数。

SqlRowsCopied

事件。每次处理完 System.Data.SqlClient.SqlBulkCopy.NotifyAfter 属性指定的行数时发生。

WriteToServer

 将数据复制到DestinationTableName 属性指定的目标表中。

......

......

终于可以撸代码了

        static void BulkCopy(string fileName) {
try {
string connectionString = "server=192.168.1.250;Initial Catalog=demo;user=sa;password=123;";
string strConn = $"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={fileName};";
string strCom = string.Format("select * from content"); OleDbConnection conn = new OleDbConnection(strConn);
OleDbCommand com = new OleDbCommand(strCom, conn);
conn.Open();
IDataReader reader = com.ExecuteReader();
using (SqlBulkCopy bcp = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction)) {
bcp.BatchSize = ;
//bcp.NotifyAfter = 10000;
bcp.BulkCopyTimeout = ;
//bcp.SqlRowsCopied += new SqlRowsCopiedEventHandler(bulkCopy_SqlRowsCopied);//每一批处理完触发事件
bcp.DestinationTableName = "content1";
bcp.ColumnMappings.Add("id", "id");
bcp.ColumnMappings.Add("type1", "typeA");
bcp.ColumnMappings.Add("type2", "typeB");
bcp.ColumnMappings.Add("type3", "typeC");
bcp.ColumnMappings.Add("type4", "typeD");
bcp.ColumnMappings.Add("type5", "typeE");
bcp.WriteToServer(reader);
}
reader.Close();
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
} }
private static void bulkCopy_SqlRowsCopied(object sender, SqlRowsCopiedEventArgs e) {
count += ;
//var count = e.RowsCopied;//当前批量复制操作期间复制的行数。
Console.Clear();
Console.WriteLine($"{count}条数据已复制完成.");
}

很多时候不会只有一个数据文件,比如:

遍历取出每个文件夹下的mdb文件

  static void ProRun() {
List<FileInfo> list = new List<FileInfo>(); DirectoryInfo dir = new DirectoryInfo(@"E:\XXX"); var dirInfo = dir.GetDirectories(); dirInfo.ToList().ForEach(x => {
x.GetFiles("*.mdb").ToList().ForEach(file => {
//排除不需要的文件
if (!file.Name.Equals("XXX.mdb")) {
list.Add(file);
}
});
}); list.ForEach(file => {
BulkCopy(file.FullName);
}); }

结语:可以更改为SQL,ACCESS,ORACLE,EXCEL....等数据源,因为OLE DB。

使用 OLEDB 及 SqlBulkCopy 将多个不在同一文件夹下的 ACCESS mdb 数据文件导入MSSQL的更多相关文章

  1. myGeneration代码生成器

    转自:http://www.cnblogs.com/leitwolf/archive/2007/07/27/833255.html http://blog.csdn.net/happyhippy/ar ...

  2. Asp.Net 之 Web.config 配置文件详解

    在asp.net中配置文件名一般默认是web.config.每个web.config文件都是基于XML的文本文件,并且可以保存到Web应用程序中的任何目录中.在发布Web应用程序时web.config ...

  3. ASP.NET中的配置文件

    ASP.NET中的配置文件 原创 2014年10月13日 08:15:27 1199   在机房收费系统的时候曾经应用过配置文件,当时也就那么一用对配置文件了解的不是很透彻,下面就来总结一下有关配置文 ...

  4. 利用C#脚本来处理Excel

    废不多,直入正题. 所需环境:安装了Windows操作系统和Office软件的电脑一台. 开发语言:C# 开发需求:1.利用C#脚本读取Excel .xlsx文件 2.将程序中的数据存储到.csv文件 ...

  5. VC++ 訪问数据库实例具体解释图解

    一 ADO 方式訪问 Access 新建一个对话框project,加入控件,如图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2 ...

  6. 未在本地计算机上注册"microsoft.ACE.oledb.12.0"提供程序解决办法

    错误信息:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序. 解决办法: 去http://download.microsoft.com/download/7/0/3/7 ...

  7. 从Excel中导入数据时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决办法

    注意,64位系统,用64位的补丁文件; https://www.cnblogs.com/A2008A/articles/2438962.html 操作系统:使用的是64位的Windows Server ...

  8. 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0

    从Excel中导入数据时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决办法 操作系统:使用的是64位的Windows Server 2008 解决办法 ...

  9. C# 使用OLEDB读取不同版本Excel数据的连接字符串

    用OLEDB通过设置连接字符串可以像读取sqlserver一样将excel中的数据读取出来,但是excel2003和excel2007/2010的连接字符串是不同的 /// <summary&g ...

随机推荐

  1. mysql--mysql的安装与目录介绍

    一.mysql的下载安装 1.下载安装 1.windows10下安装 我们采用绿色免安装版, 打开你的mysql文件夹中的bin目录,我的是这个样子的 将这个路径添加入系统环境变量,首先右键此电脑-- ...

  2. Learning Rich Features from RGB-D Images for Object Detection and Segmentation论文笔记

    相关工作: 将R-CNN推广到RGB-D图像,引入一种新的编码方式来捕获图像中像素的地心姿态,并且这种新的编码方式比单纯使用深度通道有了明显的改进. 我们建议在每个像素上用三个通道编码深度图像:水平视 ...

  3. CVE-2018-15982漏洞复现

    作者:欧根 漏洞信息:CVE-2018-15982 Adobe已发布适用于Windows,macOS,Linux和Chrome OS的Adobe Flash Player安全更新.这些更新解决一个  ...

  4. Elastic Search 5.x Nest Multiple Queries C#

    I'm using C# with those nuget packeges; <package id="Elasticsearch.Net" version="5 ...

  5. python unittest框架理解与总结(二)

    unittest基本原理: ♦整个平台的搭建使用的是python的unittest测试框架,这里简单介绍下unittest模块的简单应用. ♦unittest是python的标准测试库,相比于其他测试 ...

  6. .NET Core容器化之多容器应用部署-使用Docker-Compose

    原文补充: -- docker-compose.ymlversion: ' services: mvc-web: container_name: mvc.web.compose build: . re ...

  7. L04-VirtualBox中CentOS7网络配置(可连外网)

    本文所述的方法在RHEL6.5.RHEL7和CentOS6.5中同样适用. 1.工具:VirtualBox,虚拟机:CentOS7 2.VirtualBox工具中的网络配置 (1)VirtualBox ...

  8. [原创]php任务调度器 hellogerard/jobby

    目录 简介 安装 标准使用 选项 项目实践 简介 一个强大的php层面上的定时任务调度器, 无需修改系统层面的crontab 实际中, php 结合 crontab 来实现定时任务是一种经得住考验的实 ...

  9. jinja url_for js 参数

    在JavaScript中,也就是客户端,向flask路由服务器端使用post请求并在url_for中传递参数,服务器端获取不到该参数, Jinja不能使用Javascript变量,如下所示: var ...

  10. 1091 N-自守数 (15 分)

    // 建一个判断函数,接受两个整形的变量,再通过循环按位判断相等与否,主体函数中调用被调函数,建立一个判断变量.#include <iostream> using namespace st ...