导读:SQL Server 2008推出了一个强大的数据集成和转换应用程序,叫做SQL Server集成服务(SSIS)。SSIS的一个主要功能是将数据移入和移出SQL Server。外部的数据源可以以任何格式存在,另一个数据库、Excel工作表、XML文件或一个平面文本文件,这只是仅举几例。数据不仅可以从数据源移到目的地,而且它还可以在它移动时被操纵和改变。这些改变可能是简单的转换,比如小数四舍五入或将名称的一个字母大写,也可能是极其复杂的数据转换。虽然SSIS可以做的任务列表几乎是没有结尾的,但是本篇文章将关注于导入一个文本文件到一个标准的SQL Server数据库表中去。
BIDS
SQL Server集成服务应用程序是在BIDS(商业智能开发套件)中创建的。BIDS是一个Visual Studio工具,包含在SQL Server内。除了创建SSIS包,BIDS还可以用来为SQL Server报表服务和分析服务创建应用程序。就像SQL Server管理套件是SQL的“瑞士军刀”一样,BIDS是一个用于创建导入、导出和数据操纵程序的全能开发工具。
建立
在第一个练习中,我们将导入一个包含联系名称的文本文件到SQL Server中去。没有循环或编程,只是一个简单的文件导入示例。我创建了一个包含五个联系人的文本文件,它们由竖线隔开,如下所示。
Gustavo |Achong |1970 Napa Ct. |London
Catherine|Abel |9833 Mt. Dias Blv.|London
Kim|Abercrombie |7484 Roundtree Drive|London
Humberto|Acevedo|9539 Glenside Dr|London
Pilar|Ackerman |1226 Shoe St. |Oxford
每一行包括一个First Name、 Last Name、Address和City。竖线(|)分隔数据的每一列。SQL Server没有要求必须是竖线。任何分隔符都可以使用,包括普通格式的Tab、空格和逗号。我复制了上面的联系人到记事本中并将它们保存在我的C:\驱动盘上。在SQL Server中,我使用下面的TSQL创建了一个数据库叫做“Test”和一个Contacts表:
CREATE TABLE [dbo].[Contacts](
[FirstName] [varchar](50) NULL,
[LastName] [varchar](50) NULL,
[Address] [varchar](50) NULL,
[City] [varchar](50) NULL,
[State] [varchar](50) NULL,
[Zip] [varchar](50) NULL
) ON [PRIMARY]
这个新的Contacts表包括叫做“State”和“Zip”的字段,它们不出现在我们的文本文件中。SSIS在我们的导入过程中将忽略这些字段。
BIDS
要开始这个例子,通过选择Start->All Programs->Microsoft SQL Server 2008,然后是Microsoft SQL Server Business Intelligence Development Studio(BIDS)从而在Windows中打开BIDS。一个空的BIDS 界面将打开。从顶部的菜单中选择File->New Project。在New Project对话框中,选择Business Intelligence Project->Integration Service Project,然后指定一个项目名称和目录。这个位置不需要和我们将要导入的文本文件位置一样。
图1
点击OK将弹出一个空白的设计器。注意,设计器顶部有四个标签页:Control Flow、Data Flow、Event Handlers和Package Explorer。在SSIS中创建的程序叫做包,而Package Explorer是用来导航它们的。在本文中我们将关注的标签页是Control和Data Flow标签页。“Control”项是一个对象容器,它使我们的程序具有结构、功能或约束。Data Flow项移动和/或转换数据值。我认为对于这两个标签页,我们是以相同的方式来分隔GUI代码和业务逻辑的。Control定义是“什么”( FTP Task、Import Task、Send Mail Task),而Data Flow指定谁以及怎么做。
#p#
从Control Flow Items 的菜单里,拖拉一个“Data Flow Task”对象到设计器上。Data Flow Task将数据从数据源移动到另一个。我右键单击了这个任务并重新命名它为dftContacts,如下所示。
图2
双击这个任务,进入到它的Data Flow属性中。在这个数据流中,我们将定义我们的文本文件源和SQL Server目标表以及哪些数据字段要移到哪里。
从左边的Data Flow Services菜单中,拖拉一个“Flat File Source”对象到Data Flow界面上。双击它来打开它的属性。点击New按钮来创建到这个文本文件的一个新连接。在Flat File Connection Manager编辑器中,我命名它为“TextFileContacts”,然后浏览到硬盘上这个文件的位置。
图3
双击Columns菜单项,然后指定一个|(竖线)作为字段分隔符。点击刷新按钮将显示这个文本文件的五条数据记录。
图4
点击OK返回到Flat File Source Editor。接下来,我们将给这些字段一个头名称。尽管这不是所要求的,但是它使得这个包更加易读。点击左边菜单中的“Columns”。在Output字段中,将名称从Column 0、1、 2、3改为FirstName、 LastName、Address和City,如下所示,然后点击OK。
图5
#p#
我们的平面文件导入对象现在完成了。接下来,我们将指定我们的目标SQL Server表。从左边的菜单中,在工具箱的Data Flow Destination区域中,拖拉一个“SQL Server Destination”到Data Flow工作区域上。接下来,点击Flat File Source并从它拖拉绿色箭头到新的SQL Server Destination。
图6
这指定了这个数据将从Flat File流向SQL Server目标。注意目标图标中的红色X。这意味着这个对象没有被配置。双击SQL Server Destination对象来打开它的属性。点击Connection Manager上的New,然后点击Configure OLE DB Connection Manager上的New。接下来,指定你的SQL Server名称,验证方法和目标表的名称。点击“Test Connection”按钮来确认连接是有效的。点击OK然后再点击OK返回到SQL Design Editor。接下来,从“Use a table or view”下拉列表中选择新创建的Contacts表。因为我们在SQL Server表中具有的字段比Flat File源中的多,所以点击左边菜单中的“Mappings”来核实字段将正确地流出。源和目标应该和SQL Server表匹配,State 和Zip字段被忽略,因为在平面文件源中没有任何用于它们的导入数据,如下所示。点击OK。
图7
这个包现在完成了。点击顶部菜单中的保存图标。要运行这个包,点击顶部菜单中的绿色三角形。这个包将以调试模式执行。当每个对象成功完成后,它将变成绿色。平面文件中的数据记录转移到了SQL server中。
总结
SQL Server 集成服务(SSIS)是一个全能的导入、导出、转换管理器。只要进行少量的练习,就可以很容易地使用BIDS的图形化界面来创建复杂的工作。上文中也给出了详细的分析,希望能够对大家学习SQL Server数据库有所帮助。
【编辑推荐】