导读: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
从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
我们的平面文件导入对象现在完成了。接下来,我们将指定我们的目标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数据库有所帮助。
导读: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指定谁以及怎么做。
从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
我们的平面文件导入对象现在完成了。接下来,我们将指定我们的目标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数据库有所帮助。