使用SQL Server 2008导入平面文件

数据库 SQL Server
SQL Server是一个关系数据库管理系统,SQL Server 2008是一个重大的产品版本,它推出了许的功能,SQL Server 2008功能多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本。下文中为大家介绍怎样使用SQL Server 2008导入平面文件。

导读: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数据库有所帮助。

【编辑推荐】

  1. SQL Server 2008内存性能监控
  2. SQL Server 2008中的数据压缩功能
  3. 解析SQL Server 2008中的新语句:MERGE
  4. 解析SQL Server 2008的商业智能
责任编辑:迎迎 来源: IT专家网
相关推荐

2009-02-25 11:42:43

FILESTREAM文件流文件管理

2009-04-16 16:54:53

集成IntegrationSSIS

2010-11-26 14:11:33

SQL Server

2011-08-29 18:02:29

SQL Server FileStream

2009-04-16 17:44:46

性能优化扩展高性能

2011-09-01 10:46:56

SQL Server 快速清理日志文件

2011-08-01 10:09:57

SSAS数据库

2009-04-16 17:55:15

扩展热插拔SQL Server

2011-08-29 10:08:04

SQL Server osqlocmd批处理

2010-12-07 16:17:40

SQL Server

2010-11-26 14:08:00

SQL Server

2010-12-16 09:05:50

SQL Server

2009-02-16 15:41:04

非结构化数据SQL Server SQL Server

2010-07-26 10:45:03

2011-03-29 12:42:25

SQL Server 高效性

2009-04-16 17:34:19

2009-04-16 18:15:19

动作审核审核活动SQL Server

2009-02-24 13:15:22

FILESTREAM新特性SQL Server

2010-03-23 09:52:23

SQL Server

2009-04-16 17:44:31

点赞
收藏

51CTO技术栈公众号