使用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的商业智能

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/303318.html<

(0)
管理的头像管理
上一篇2025-05-25 05:05
下一篇 2025-05-25 05:06

相关推荐

  • 云服务器和云虚拟主机怎么选?云服务器和虚拟主机区别

    云服务器适合业务增长快、需弹性扩展的场景,而云虚拟主机适合预算有限、技术门槛低的小型静态网站或测试环境,二者核心区别在于资源独享性与运维复杂度,核心差异解析:从底层架构到使用体验很多人容易混淆这两者,觉得它们都是“买空间建站”,它们的底层逻辑完全不同,云服务器(ECS)就像是你租了一整栋别墅,水电网络独立,你想……

    2026-06-29
    0
  • 赣州智慧旅游招聘是真的吗?赣州旅游人才招聘信息

    中级岗位(3-5年经验)月薪范围通常在6000-10000元,这类岗位需要独立负责项目模块,如独立运营一个抖音账号,或维护一个景区小程序的功能迭代,具备成功案例的候选人议价能力较强,高级岗位(5年以上经验)月薪范围通常在10000-20000元,部分核心管理岗可达更高,这类人才需要具备战略规划能力,如制定整个景……

    2026-06-29
    0
  • 赣州智能物联网车位锁如何管理?智能车位锁管理系统多少钱

    赣州智能物联网车位锁管理的核心在于通过云端平台实现远程控锁、状态实时监控及自动计费,彻底解决传统车位“被占难管”与“找位难”的痛点,在赣州这样的城市,随着机动车保有量的持续增长,老旧小区、商业综合体以及私人固定车位的资源矛盾日益凸显,传统的机械地锁或简易遥控锁,不仅操作繁琐,更无法实现数据化管理,引入智能物联网……

    2026-06-29
    0
  • 赣州智能消防栓好用吗,智能消防栓多少钱一个

    赣州智能消防栓通过物联网技术实现实时监测与远程报警,能显著降低火灾响应时间并提升城市消防安全管理水平,是目前智慧城市建设中不可或缺的基础设施,赣州智能消防栓的核心价值与应用场景传统消防栓往往存在“看不见、摸不着、用不了”的痛点,在赣州这样地形复杂、老城区与新城区并存的区域,传统设施的管理难度极大,智能消防栓的出……

    2026-06-29
    0
  • 云服务器和物理机到底有啥区别?

    云服务器本质上是虚拟化资源池中的弹性实例,而传统物理服务器是独占的硬件实体,前者胜在弹性与运维便捷,后者强在物理隔离与性能稳定,具体选择取决于业务对成本、扩展性及安全合规的权衡,很多人初次接触服务器时,容易把“云服务器”和“传统物理服务器”混为一谈,觉得它们都是用来跑网站或存数据的盒子,这两者的底层逻辑完全不同……

    2026-06-29
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注