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

  

创建一个项目

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

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

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

图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

图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。

图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退出编辑界面。

图5-4

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

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

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

图5-5

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

  

问题

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

图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。   图5-7                                         图5-8

                                        

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

创建SSIS包—建立端到端的package相关推荐

  1. 创建SSIS包—循环和动态package

    在上一个随笔中我们处理了一个010305c.dat文件,如果在一个文件夹中有多个dat文件应该怎么办呢? 这里就需要使用Foreach Loop container任务来循环处理文件,这个需要使用多个 ...

  2. SSIS_创建SSIS包和数据源

    包是SSIS的核心对象.一个包包含控制流.数据流和连接.控制流由一些工作流元素构成,这些元素或许是执行SQL任务.数据流任务,FTP任务等.数据流主要用来实现商业逻辑,如ETL.连接包括数据源和数据目 ...

  3. ssis 导入excel_使用SSIS包将MS Excel数据导入数据库

    ssis 导入excel The easiest way to import the data into the SQL database is using the Import Data wizar ...

  4. ssis 包_SSIS包中的错误处理概述

    ssis 包 This article explains the process of configuring Error handling in SSIS package. 本文介绍了在SSIS程序 ...

  5. aws rds监控慢sql_在AWS RDS SQL Server上使用SSIS包

    aws rds监控慢sql In the first part of the article, Explore SQL Server Integration Services (SSIS) on AW ...

  6. 使用SSIS包导入SQL Server FILESTREAM数据

    初始配置 (Initial configuration) We have been exploring the SQL Server FILESTREAM feature in this ongoin ...

  7. java 执行ssis包_在SSIS包中使用CHECKPOINT重新启动包执行

    java 执行ssis包 In the article, SQL Server CHECKPOINT, Lazy Writer, Eager Writer and Dirty Pages in SQL ...

  8. 利用 AssemblyAI 在 PyTorch 中建立端到端的语音识别模型

    作者 | Comet 译者 | 天道酬勤,责编 | Carol 出品 | AI 科技大本营(ID:rgznai100) 这篇文章是由AssemblyAI的机器学习研究工程师Michael Nguyen ...

  9. ns3统计时延和丢包率_端到端高丢包率小区优化思路

    1.       端到端高丢包小区整体分析思路 (1)VOLTE端到端高丢包率统计方式说明 VOLTE端到端高丢包率小区数据取自GM接口丢包率统计,涉及终端.空口.基站.PTN传输网络.S/PGW.S ...

最新文章

  1. iframe超出外层元素显示滚动条怎么办?
  2. seaborn系列 (9) | 分簇散点图swarmplot()
  3. 软件测试 图覆盖,软件测试(四)——图覆盖
  4. 设计模式C++实现(2)——策略模式
  5. PMCAFF微课堂 | 积木盒子产品总监 杨帆:互联网金融撮合交易的本质
  6. CVPR 2018 《Towards High Performance Video Object Detection》论文笔记
  7. mysql kingshard_浅谈 Kingshard MySQL 中间件
  8. 下载SAP标准教程的方法
  9. 正在连接至zimperium服务器,ZIMPERIUM Mobile IPS (zIPS)
  10. 分享一个最终幻想勇气启示录的脚本,能自动刷图打觉醒材料
  11. 08、ADS使用记录之低通滤波器设计与优化
  12. 2010年10月14日糗事TOP10
  13. 【C++】宏定义函数指针类型
  14. 张宏 :移动机器人全局定位技术与方法是啥?道翰天琼认知智能机器人平台API接口大脑为您揭秘。
  15. HXN-xh电池升压芯片,适用于干电池,锂电池电路
  16. Python字符串编码检测
  17. 可以听歌玩游戏看股票背单词的ROS开发工具?小鱼:就差能点外卖了~
  18. linux中使用jmeter压测
  19. 上汽通用五菱:搭建质量运营平台,实时预警为汽车制造保驾护航
  20. uni-app 日历、提醒事项 添加日程和提醒(ios)

热门文章

  1. 理解 loader 的工作流
  2. .net core 1.1 mysql_Asp.net Core 1.1 升级后操作mysql出错的解决办法|chu
  3. java实验 输入输出_实验十三 Java输入输出(一)
  4. Ubuntu MySQL 配置 ip binding
  5. 会计电算化是对用电子计算机处理,会计电算化的意义是什么
  6. php 类别名,关于php:从类别ID laravel获取类别名称
  7. Tablayout+ViewPager+Fragment 实现页面切换
  8. VB让控件可以当标题栏拖动
  9. CMD/DOS下符号的作用参考
  10. MIT机器学习免费课程,13周从理论到实践,大牛教授Python授课