3.4 使用Bulk Insert和Execute SQL任务

3.4  使用Bulk Insert和Execute SQL任务

我们现在花点时间来体验一下刚才讨论的任务。首先,如前一章所见,创建一个称为Chapter3的新SSIS项目。然后将随项目创建的程序包的名称从Package.dtsx改为BulkLoadZip.dtsx。如果被提示重命名程序包,则选择Yes。

在了解本节后续的介绍之前,请先访问本书的Web页面www.wrox.com,然后下载并解压缩ZipCode.txt文件。将该文件放置到名为C:/SSISDemos的新目录下,然后,在SQL Management Studio或在自己所选择的工具中,在AdventureWorks数据库中创建以下表。稍后插入这个表:

CREATE TABLE Chapter3 (

     ZipCode CHAR(5),

     State CHAR(2),

     ZipName VARCHAR(16))

)

文本框:  
图  3-3

回到BIDS,将Bulk Insert任务拖放到Control Flow设计窗格上。注意该任务的上面具有一个红色图标,表示该任务尚未被配置。在任务上双击打开编辑器。在General页面中,针对Name选项输入名称“Load Zip Codes”。针对Description选项,输入“Loads zip codes from a flat file”。

单击Connectin页面。从Connection下拉框中,选择<New connection…>。这将打开Configure OLE DB Connection Manager对话框。你现在要创建一个到AdventureWorks数据库的连接,本章中将重复使用到该连接。单击New增加一个新的Connection Manager。对于Server Name选项,选择包含AdventureWorks数据库的服务器。对于数据库,则选择AdventureWorks数据库。最终的配置应当如图3-3所示,不过你的登录信息应当根据服务器的安全性配置而异。单击OK回到前面的界面,再单击OK回到Bulk Insert Task Editor。

现在可以看到刚才创建的Connection Manager已经被转移到Connection下拉框中。对于DestinationTable选项,选择[AdventureWorks].[dbo].[Chapter3]表。其他的选项保持默认选项。RowDelimiter选项为{CR}{LF}(回车符),ColumnDelimiter为Tab。对于File选项,需要再次选择<New connection…>来创建一个新的Connection Manager。这将打开File Connection Manager Editor。对于Usage Type,选择Existing File。然后针对File选项指向C:/SSISDemos/ZipCode.txt。最终的屏幕界面应当类似于图3-4。

接下来,进入到Options页面并将FirstRow选项修改为2。如果打开ZipCode.txt文件,将会注意到在数据之前其中有个带有列名的页首行。通过将FirstRow选项修改为2,可以让任务跳过页首行。单击OK退出编辑器。

在配置了第一个任务后,将SQL 任务拖放到设计窗格上,双击该任务打开编辑器。将任务命名为“Purge Chapter3 Table”,这次你可以加入自己所希望的说明内容。对于Connection下拉框,选择刚才创建的AdventureWorks Connection Manager。针对SQLStatement选项,则输入以下的SQL代码:

DELETE FROM Chapter3

最终的General页面配置应当如图3-5所示。单击OK退出编辑器。

 

图  3-4                                                                               图  3-5

单击名为“Purge Chapter3 Table”的任务,并将绿色箭头拖放到名为“Load Zip Codes”的任务上。这将在两个任务之间创建一个On Success优先约束。Bulk Insert任务将在第一个任务执行成功之后才执行。到现在,程序包创建结束,保存程序包并执行它。当程序包执行时,将使用Execute SQL任务对表的内容进行清理,然后使用Bulk Insert任务重新填充表的内容。图3-6表明了一个成功的执行过程。

文本框:  
图  3-6

要停止程序包的执行,单击Stop按钮。在第5章中,你将看到一个类似的例子,但是它使用的是Data Flow任务。使用Bulk Insert任务的缺点是它缺少错误处理功能以及“要么全是要么全不是”的本质。如果单个行插入失败,则整个任务将失败(这取决于所设置的允许最大错误数)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值