SSIS(SQL Server Integration Service)是从MS SQL 2005开始引入的,是一种ETL(Extract Transform Load)工具,SSIS比普通的ETL更进一步,它是可视化的,用Visual Studio来开发,包文件(*.dtsx)采用的是XML格式。

对于SSIS的研究其实去年就已经开始,但是由于它的不稳定性所以一直没敢大规模的使用它。公司一个实验室的项目,我开始尝试了一下SSIS的数据采集的强大功能,根据系统的需求,有大量的地方使用到数据的导入功能。目前大部分软件系统的初始化都采用的Excel文档的方式实现数据向数据库的录入。只要涉及到Excel的导入,在。Net平台中无非就是那几种方式:1、ext模版导入2、NPOI,一些常用的数据导入方式,虽然说它们的使用技术已经成熟但遇到复杂的数据表现方式或大量数据入库的时候,性能就没有那么的完美了。比如下面一张课表信息:

如果使用NPOI这样的方式来读取入库太复杂了。SSIS本身自带了excel的数据源的导入方式,可以将ExceL的整张表都一行一行的导入到指定的数据库表中,还可以在导入的过程中进行数据转换,非常方便,特别是对于大数据量的导入非常方便,但同时有利就有弊端。

第一、Excel在数据行插入的时候是无序的,所以对于顺序由严格要求的数据导入是必须注意,自己定义索引,方便排序。

第二、数据导入时,会产生大量的空行数据,就是表中一行数据都为“Null”

第三、excel表中的每一列数据必须保证数据格式一致,否则它会自动从excel 的前五行根据少数服从多数的原则,确定数据格式,其它不同类型的数据导入数据库中后将为空。

第四、目前excel导入数据时只能支持32位生成的包类型。

在Excel进行数据导入时,对多个包进行包配置时,如果重用了配置文件,并配置了相同的Excel的文件路径位置,但Excel数据源内容列并不一致。在用SSISDeploymentManifest包发布时千万不要点击‘安装后并验证“,当包完成发布后,包会自动寻找Excel的原位置进行数据列匹配,并记忆了列属性。这时即使在未进行包配置前SBIDS进行包运行调试无误,验证也一定会失败,发布后程序也必然是无法使用的。

using DtsRunTime = Microsoft.SqlServer.Dts.Runtime.Wrapper;

           DtsRunTime.Application dtsApplication = new DtsRunTime.Application();
//DtsRunTime.IDTSPackage90 package = dtsApplication.LoadPackage(@"c:\xx.dtsx", true, null); // IDTSPackage90(数据库为2005)IDTSPackage100(数据库为2008)
DtsRunTime.IDTSPackage90 package = dtsApplication.LoadFromSQLServer(
this.YOUR_PACKAGE_NAME,
this.YOUR_SERVER_NAME,
this.SQL_USER,
this.SQL_PASSWORD,
true,
null); DtsRunTime.DTSExecResult result = package.Execute();

C#.NET可使用程序对Package进行调用,其实是对数据库安装目录,如:C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe的调用。

DTExec.exe 命令提示实用工具用于配置和执行 SQL Server Integration Services 包。使用 dtexec 实用工具,可以访问所有包配置和执行功能,如连接、属性、变量、日志和进度指示器等。使用 dtexec 实用工具,可以加载来自以下三个源的包:Microsoft SQL Server 数据库、SSIS 服务和文件系统

使用ssis完成excel的数据导入的更多相关文章

  1. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

    效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])    本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   ...

  2. 把Excel的数据导入到数据库

    将Excel作为数据源,将数据导入数据库,是SSIS的一个简单的应用,下图是示例Excel,数据列是code和name 第一部分,Excel中的数据类型是数值类型 1,使用SSDT创建一个packag ...

  3. Excel的数据导入到PB的DW中

    Excel的数据导入到PB的DW中//==================================================================== // Event:cb_ ...

  4. Visual Basic 2012 借助DataGridView控件将Excel 2010数据导入到SQL server 2012

    (注:注释的颜色原本为绿色,在这里变为黑色,有点不便,但不会造成阅读影响.放入Visual Basic2012代码编辑器后会还原成绿色.) 摘  要:DataGridView控件作为数据传输的中介,只 ...

  5. 将Excel中数据导入数据库(三)

    上篇文章将Excel中数据导入数据库时,将从Excel读入的数据均转换成了数据库相应字段的类型,其实这是没有必要的,因为对于数据库各种类型的插入,均可以字符串格式插入.比如表WQ_SWMSAR_A字段 ...

  6. 将Excel中数据导入数据库(二)

    在上篇文章中介绍到将Excel中数据导入到数据库中,但上篇文章例子只出现了nvachar类型,且数据量很小.今天碰到将Excel中数据导入数据库中的Excel有6419行,其中每行均有48个字段,有i ...

  7. 将Excel中数据导入数据库(一)

    在工作中经常要将Excel中数据导入数据库,这里介绍一种方法. 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: Excel中数据导入数据库帮助类如下: using System; ...

  8. SQL SERVER 与ACCESS、EXCEL的数据导入导出转换

    * 说明:复制表(只复制结构,源表名:a 新表名:b)      select * into b from a where 1<>1 * 说明:拷贝表(拷贝数据,源表名:a 目标表名:b) ...

  9. Excel表数据导入数据库表中

    ***Excel表数据导入到数据库表中 通过数据库表的模板做成‘Excel’表的数据导入到数据库相应的表中(注意:主表 和 从表的关系,要先导‘主表’在导入从表) 过程:通过数据库的导入工具—先导入为 ...

随机推荐

  1. Zbrush 4R7 P3中各类模型怎么快速隐藏

    在ZBrush®软件中除了遮罩功能可以对模型局部进行编辑外,我们还可以通过显示和隐藏来对模型的局部进行控制. 查看更多内容请直接前往:http://www.zbrushcn.com/jichu/xia ...

  2. BZOJ 1500 维修数列【Splay】

    注意:1,内存限制,所以需要回收删除的点 2,当前节点的左连续区间和最大值=max(左子树的左连续区间和最大值,左子树的总和+当节点的值+max(右子树的左连续区间和最大值,0)):右连续区间和最大值 ...

  3. openstack虚拟机迁移的操作记录

    需求说明:计算节点linux-node1.openstack:192.168.1.8  计算节点linux-node2.openstack:192.168.1.17 这两个计算节点在同一个控制节点下( ...

  4. 取消StringGrid的自动滚动

    StringGrid的Options的goRowSelect为false时,在点击右侧未显示完全的Cell,StringGrid会自动向左滚动,怎样设定,取消StringGrid的自动滚动啊?Delp ...

  5. 加密算法使用(二):使用MD5加密字符串(另:byte数组转16进制自动补零方法写法)

    public static void main(String args[]) throws NoSuchAlgorithmException { String s = new String(" ...

  6. 高性能网站性能优化与系统架构(ZT)

    转载请保留出处:俊麟 Michael’s blog (http://space.itpub.net/7311285/viewspace-97) 我在CERNET做过拨号接入平台的搭建,而后在Yahoo ...

  7. WebAPI请求

    里我使用Jquery 来发起异步请求实现数据调用. 继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用. 一.无参数Get请求 一般的get请求我们可以使用jquer ...

  8. 联想Y50p预装win8系统改为win7

    &1 修改OS Optimized Defaults 开机,按[F2]进入BIOS设置,按右方向键选择到EXIT上面,按下方向键选择OS Optimized Defaults,回车,将Win8 ...

  9. flask 使用 SQLAlchemy 的两种方式

    1. 使用 flask-SQLAlchemy 扩展 # flask-ext-sqlalchemy.py from flask import Flask from flask.ext.sqlalchem ...

  10. Linux常用指令---tar | zip (解压缩)

    减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间.gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用.gzip不仅可以用 ...