创建SSIS包—建立端到端的package

摘要:
建立端到端的package这个系列中首先讲解将一系列的文件数据导入到SQLServer中的方法,然后添加一些复杂转换,最后将看到如何在package中处理错误和动态地创建package。创建一个项目使用SSIS的首要目的是从数据源中读取数据,然后写入Destination中,这个向导介绍从平面文件中读取数据。新建一个项目,选择项目类型IntegrationServiceProject,如图5-1,将默认的package文件Package.dtsx重命名为ZipLoad.dtsx。

通过基本task和transforms的学习,现在可以转入到SSIS实际应用。建立端到端的package这个系列中首先讲解将一系列的文件数据导入到SQL Server中的方法,然后添加一些复杂转换,最后将看到如何在package中处理错误和动态地创建package。

创建一个项目

使用SSIS的首要目的是从数据源中读取数据,然后写入Destination中,这个向导介绍从平面文件中读取数据。使用下面的文字

Zipcode State ZipName
32008FL BRANFORD
32009FL BRYCEVILLE
32011FL CALLAHAN
32013FL DAY32033FL ELKTON
32034FL AMELIA ISLAND
32038FL FORT WHITE
32040FL GLEN SAINT MARY
32043FL GREEN COVE SPRIN
32044FL HAMPTON
32046FL HILLIARD
32052FL JASPER
32053FL JENNINGS
32054FL LAKE BUTLER
32055FL LAKE CITY
32058FL LAWTEY
32059FL LEE
32060FL BOYS RANCH
32061FL LULU
32062FL MC ALPIN
32063FL MACCLENNY
32065FL ORANGE PARK
32066FL MAYO
32068FL MIDDLEBURG
32071FL O BRIEN
32073FL ORANGE PARK
32082FL PONTE VEDRA BEAC
32083FL RAIFORD
32084FL SAINT AUGUSTINE
32086FL SAINT AUGUSTINE
32087FL SANDERSON
32091FL STARKE
32092FL SAINT AUGUSTINE
32094FL WELLBORN
32095FL SAINT AUGUSTINE
32096FL WHITE SPRINGS
32097FL YULEE
32102FL ASTOR
32110FL BUNNELL
32112FL CRESCENT CITY
32113FL CITRA

创建ZipCode.txt文件,这个文件包含美国邮政编码。新建一个项目,选择项目类型Integration Service Project,如图5-1,将默认的package文件Package.dtsx重命名为ZipLoad.dtsx。

创建SSIS包—建立端到端的package第1张

图5-1

创建连接

我们创建一个能在多个package中使用的连接,在解决方案管理器中右击Data Source文件夹新建一个数据源,打开数据源向导,选择“Create a data source based on an existing or new connection”点击New,代开连接管理器。

注意:有多种方式建立数据源连接,例如,可以在Data Flow中拖放数据源任务。

选择Native OLE DB\SQL Native Client,输入连接名字,为方便读写数据库选择授权模式,最后选择AdventureWorks数据库,点击OK。如果没有安装AdventureWorks数据库可以任意选择一个数据库,然后测试连接,将数据源命名为AdventureWorks。在DataFlow拖放数据源的方式不能共享数据源,在下面ConnectionManagers中点击新建连接时可以看到我们已经创建好的一个连接,在所有的package中都可以选择这个连接。

下一步,新建一个指向ZipCode.txt的平面文件链接,在Package Designer中右击选择新建文件链接,命名为ZipCode Extract,指向连接C:\SSISDemos\ZipCode.txt。

Format下拉列表选择默认的Delimited,Text qualifier默认选择<none>。Text Qualifier用来设定字符串的分隔符。在文本中以逗号分隔是这个选项设置会很有用,他会忽略这些符号只抓取文本。在这个例子中文本内容没有分隔符,所以保持默认选择<none>。Header row delimiter选项设置为Tab{t},并选中Column names in first data row单选框,最终的界面如图5-2

创建SSIS包—建立端到端的package第2张

图5-2

点击Columns进入标签界面,Row Delimiter默认设置{CR}{LF},意思是使用回车换行来分隔行。Column Delimiter选择项保持默认设置Tab{t},意思是使用制表符区分列。由于选中了Column names in first data row选项所以这里看到第一行的显示的是数据而不是列名。

点击Advanced进入标签界面,在这个界面中可以设置每一个列的数据类型。默认的类型是50个字符的字符串,在这个例子中比实际要长。选中ZipCode,点击Suggest Types打开Suggest Column Types对话框,一般情况下保持默认选项,点击OK选择合适的类型。然后可以看到数据类型变成了two-byte signed integer [DT_I2],这种类型在一般情况下会满足要求,如果邮编号码以0开头时会出现错误,所以点击下拉列表框选择string [DT_STR],OutPutColumnWidth选项设置为5,最后TextQualified选项选择false,如图5-3。

创建SSIS包—建立端到端的package第3张

图5-3

创建任务

创建好连接之后可以接着创建任务,首先在Control Flow中拖放一个Data Flow Task并重命名为Load ZipCode Info。

创建数据流

双击Load ZipCode Info进入Data Flow界面,在这里进行更详细的设计。细心的话会看到在工具栏中的工具列表发生变化。

在DataFlow界面中拖放一个Flat File Source并成命名为Florida ZipCode File,双击打开编辑界面如图5-4默认选中上面我们创建的连接ZipCode,点击Columns可以看到要导出的列,点击OK退出编辑界面。

创建SSIS包—建立端到端的package第4张

图5-4

下一步,拖放一个SQL Server Destination重命名为AdventureWorks,使用绿色箭头把它和Florida ZipCode File连接起来。双击AdventureWorks选择AdventureWorks数据连接,在User a table or view下拉选项中New在这里可以编写代码新建表而不需要在SQL Server Management Studio中新建表,修改默认的建表语句后如下:

1 CREATETABLE[ZipCode](
2 [Zipcode]VARCHAR(5),
3 [State]VARCHAR(2),
4 [ZipName]VARCHAR(16)
5 )

注意:如果没有使用箭头和上一个task连接的话,这里不能点击New按钮。完成建表语句之后点击下拉列表框可以看到多了一个选项ZipCode,在Mappings标签界面中还可以看到字段映射。SSIS总是按照名字来映射,创建的表中的字段名和数据源中的是一致的,所以看到三条平行的映射,如图5-5

创建SSIS包—建立端到端的package第5张

图5-5

为使这个Package更加完整,保证每次都可以运行这个Package,回到Tontrol Flow界面拖放一个Execute SQL task,重命名为Purge ZipCode Table,双击打开编辑界面,在Connection下拉列表中选择AdventureWorks连接,在SQL Statement选项中打开编辑界面输入下面的SQL语句:

DELETE FROM ZipCode

点击OK完成编辑,把它放在Load ZipCode Info任务的上面,使用箭头把他们连接起来。整个Package就完成了,点击保存按钮,值得注意的是在这里保存的是.dtsx文件,并没有保存到服务器中,部署package在后面的随笔中讲解。

执行包

完成编辑之后,可以点击debug按钮运行,或者右击ZipCode.dtsx点击Execute Package。在运行之前会花费几秒钟时间来编译和验证。在Output界面可以看到运行过程,然后看到task的图标由黄变绿,证明Package执行成功。如果执行失败在Output 界面可以看到错误信息。如果Output界面没有打开可以点击View-Other Windows Output。

在Data Flow界面会看到具体导入了多少行,界面如图5-5。

创建SSIS包—建立端到端的package第6张

图5-5

这里要注意,上面创建txt文件的时候我只复制了一部分内容,如果你在自己的机器上实验,这里应该41 rows。这里在默认情况下,在调试状态下对Package中所做的任何修改都不会被编译运行直到下一次运行。点击Stop Debugging停止运行。

问题

在这里可能遇到一个问题,点击运行的时候并没有像上面所说的那么顺利,出现了错误,提示如图5-6:

创建SSIS包—建立端到端的package第7张

图5-6

借助强大的百度我们找到了问题的症结和解决方案,首先把这个地址贴出来

http://support.microsoft.com/kb/2009672

  1. 症状:SSIS中创建一个包含了SQL Server Destination的数据流任务,当尝试运行Package的时候,如果使用的是Windows7或者Vista操作系统,系统会打开UAC,是微软为提高系统安全而在Windows Vista中引入的新技术,它要求所有用户在标准账号模式下运行程序和任务,阻止未认证的程序安装,并阻止标准用户进行不当的系统设置改变。在这种情况下你会遇到这个错误提示:                                    SQL Server Destination] Error: Unable to prepare the SSIS bulk insert for data insertion.
    [SSIS.Pipeline] Error: component "SQL Server Destination" failed the pre-execute phase and returned error code 0xC0202071.
  2. 原因:在打开UAC功能的系统中,当程序如SSIS被管理员群组的用户执行时有两种安全令牌,一种低级别的,一种较高级别的。运行程序的时候选择“Run as Administrator”时会使用较高级别的,默认情况下SSIS程序在连接数据库的时候会使用低级别的。
  3. 解决:如果是在SQL Server Management Studio (SSMS) 或 Business Intelligence Development Studio (BIDS) 或 DTExecUI.exe中运行Package,重新代开程序并选择Run as Administrator。如图5-7,然后弹出询问对话框如图5-8,点击Yes打开程序重新运行Package。 创建SSIS包—建立端到端的package第8张  图5-7                                         创建SSIS包—建立端到端的package第9张图5-8

至此一个简单的package就完成了,我们将txt文件中的内容导入到数据库中,在数据库中使用语句SELECT * FROM ZipCode就可以查出数据,他们和txt的内容是一样的。

免责声明:文章转载自《创建SSIS包—建立端到端的package》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【安卓开发】找出安卓手机耗电元凶java property 配置文件管理工具框架,避免写入 property 乱序下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

uni-app 安卓和IOS更新方案

一、安卓平台 整包更新(apk),即常规的整个App安装包重新下载安装。 资源热更新(wgt),即App并重新安装,里面的js等前端代码进行更新。 Android App,可以直接下载新的apk,只要包名和证书不变,就可以覆盖安装。  安卓平台更新方案,详见上一篇文章https://www.cnblogs.com/tiandi/p/15331522.h...

流行的源程序版本管理软件和项目管理软件各自的优缺点

Microsoft TFS(Team Foundation Server): 优点: 任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM能与 VS 无缝接合 缺点: 搭建、维护tfs比较复杂,硬件要求也比较高。 GitHub: 优点: GitHub是一个非常万能的工具。对于任何大...

windows下模拟网络延时、丢包、抖动

1.Fiddler 免费软件 模拟网速功能比较单一(Rules --> Performance --> Simulate Modem speed),选项较少,Fiddler仅是减缓带宽并未引入包丢失(后面的Network Delay Simulator加入了包丢失模拟)。且因为浏览器并发连接数问题,会造成(Http watch 或Firebug...

构建属于自己的恶意软件特征库

引自http://blog.sina.com.cn/s/blog_e8e60bc00102vjz9.html 感谢阿里云安全 的分享 0x00简介 最近研究了一些开源的杀毒引擎,总结了一下利用ClamAV(www.clamav.net)来打造属于自己的恶意软件分析特征库。特征库主要包括HASH匹配、文件内容特征库、逻辑特征库、二进制特征码(SHELLCOD...

APP测试点总结(功能,交互,死机崩溃状态分析,容易出错的检查点)

APP测试点总结(功能,交互,死机崩溃状态分析,容易出错的检查点) 版权声明:本文为博主原创文章,未经博主允许不得转载。 最近涉足APP端测试,常见检查点总结如下:   一.业务方面: 1.  注册(无效数据剔除),登录(语音和短信验证码),第三方登录(微信,微博,qq),忘记密码处理,注册   (登录后身份判断校验);账号互踢(同一时间一个账号只能在一台...

SCSF智能客户端学习笔记(一)

什么是智能客户端   要了解智能客户端,首先要认识瘦客户端技术和胖客户端技术各自的优缺点。        对于前者,典型的应用就是使用浏览器,通过输入URL远程访问服务端,并向服务端发送命令,获取服务端的资源,然后在客户端的浏览器上显示出来。由于这种技术数据库存放在服务端,客户端应用界面的也是由服务端的文件生成,因此在客户端上占用资源少,对客户端的设备要求...