使用ssis完成excel的数据导入

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 服务和文件系统

时间: 2024-10-10 06:27:18

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

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

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])  本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   (三)SSIS的简介   (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介绍一下)   (六)SSIS操作过程(生成Package,用来调用)(下一篇随笔将详细讲解制作Package包的过程,图片太多,篇幅过长,因此本文将直接采用生成的Package包进行

把Excel的数据导入到数据库

将Excel作为数据源,将数据导入数据库,是SSIS的一个简单的应用,下图是示例Excel,数据列是code和name 第一部分,Excel中的数据类型是数值类型 1,使用SSDT创建一个package,创建Excel data source component,SSDT会在Connection Managers中创建一个Excel的connection 由于示例Excel的首行是列名,所以需要勾选"First row has column names",Excel connectio

Excel表数据导入Sql Server数据库中

Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1.首先,我们要先在test数据库中新建一个my_test表,该表具有三个字段tid int类型, tname nvarchar类型, tt nvarchar类型(注意:my_test表中的数据类型必须与Excel中相应字段的类型一致) 2. 我们用SELECT * FROM  OPENROWSET( 'Microsoft.Jet.OLEDB.4.0 ', 'Excel  5.0;DatabASE=[Excel表

怎样把 excel 的数据导入到数据库里面去

1. 把 excel 另存为 .csv 格式 2. 用 Notepad 打开 .csv 文件, 第一行就是所有的字段 3. 创建表结构 create table yu_rt_01 as select Transaction_Id,Last_Update_Date,Last_Updated_By,Creation_Date,Created_By,Last_Update_Login,Request_Id,... ,Lcm_Shipment_Line_Id from rcv_transactions

Java版将EXCEL表数据导入到数据库中

1.采用第三方控件JXL实现 try { //实例化一个工作簿对象 Workbook workBook=Workbook.getWorkbook(new File("F://qzlx.xls")); //获取该工作表中的第一个工作表 Sheet sheet=workBook.getSheet(0); //获取该工作表的行数,以供下面循环使用 int rowSize=sheet.getRows(); for(int i=0;i<rowSize;i++) { //编号 String

Excel表数据导入数据库表中

***Excel表数据导入到数据库表中 通过数据库表的模板做成‘Excel’表的数据导入到数据库相应的表中(注意:主表 和 从表的关系,要先导‘主表’在导入从表) 过程:通过数据库的导入工具—先导入为一张临时表,在插入到正式表中.语句如下: --YK_TYPK插入数据 insert into YK_TYPK --插入'YK_TYPK(通用品库)'数据 select * from Sheet1$_TYPK_caoyao ---------------------------------------

EXCEL表数据导入到ORACLE数据库中

将EXCEL表导入ORACLE数据库中 一.建立表 1.建立表 2.查询表 select * from yy; 二.导入程序 在excel中找到需要导入的数据 2.将excel中的数据另存为文本文件(有制表符分割的) 3.在pl*sql中选择tools-->text importer,在出现的窗口中选择"Data from Textfile",然后再选择"Open data file", 在弹出的文件选择框中选中保存有数据的文本文件,此时将会看到data fr

把Excel表数据导入数据库

导入格式 //导入Excel(导入资产信息) private void button2_Click(object sender, EventArgs e) { OpenFileDialog openfilediaglog = new OpenFileDialog(); openfilediaglog.Filter = "xls文件|*.xls"; if (openfilediaglog.ShowDialog() == DialogResult.OK) { string str = Im

如何通过PHP将excel的数据导入MySQL中

在开发PHP程序时,很多时候我们会有将数据批量导入数据库的需求,如学生信息批量添加到数据库中,而事先用excel编排好,对excel实行操作,便是我们比较常用的选择方式. 在对excel的操作中,phpExcelReade便是很多人的共同选择.在具体实现中,我们可以以文件上传方式将excel文件上传到服务器中的某个位置,通过以下操作将excel中的数据导入到数据库后,在将上传的文件删除即可. 代码如下: $dir=dirname(__FILE__); //获取当前脚本的绝对路径 $dir=str