65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 SSIS 导入定长文件数据到数据库表

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.33/5 (4投票s)

2014年9月23日

CPOL

4分钟阅读

viewsIcon

17749

downloadIcon

533

本文提供了将固定长度文件数据导入 SQL Server 数据库表的详细分步信息。

引言

目前,大多数旧系统正在转换为最新技术。例如,将大型机系统转换为基于 .NET 的系统。在此过程中,数据也必须进行转换。

通常,这些旧系统以包含固定长度数据的文本文件形式提供数据。

本文介绍了如何使用 SSIS 将文件中存在的固定长度数据导入 SQL Server 数据库表。

SSIS(SQL Server Integration Services)是 Microsoft SQL Server 附带的一个 ETL(提取-转换-加载)工具。

Using the Code

我已尽力提供将固定长度文件数据导入 SQL Server 数据库表的详细分步信息。我使用了 Microsoft SQL Server 2008 R2 和 Business Intelligence Studio 来编写代码,但它与 SQL Server 2005 及更高版本类似,应可进行少量修改后使用。

使用 SSIS 导入固定长度文件

打开 SQL Server Business Intelligence Development Studio

  • 选择“开始”->“所有程序”->“Microsoft SQL Server 2008 R2”->“Business Intelligence Development Studio”。

  • 这将显示以下屏幕。

  • 现在,要创建新项目,请选择“文件”菜单 ->“新建”->“项目”。它将显示一个窗口,用于选择项目类型及其名称。
  • 选择项目类型为“Business Intelligence Projects”,模板为“Integration Services Project”,如下图所示。
  • 选择项目位置。我已选择项目位置为“C:\CodeProject\ImportFixedLengthFile”。
  • 输入项目名称。我已提供项目名称为“ImportFixedLengthFile”。请参考下图。

  • 单击“确定”。
  • 这将创建一个需要引用文件的项目。并显示以下屏幕。

  • 从工具箱拖动“数据流任务”并将其放入“控制流”中。

  • 双击“数据流任务”,将带您进入数据流区域。
  • 拖放“平面文件源”。
  • 右键单击它并选择“编辑”。这将打开一个窗口来配置数据源。

    输入连接名称。我已将连接名称命名为 SourceofData。

    在“常规设置”中,单击“浏览”按钮并选择包含数据的文件的位置。

    选择格式为“固定宽度”。

    选择“高级”选项卡。现在,在这里,我们需要选择每个列的属性。

    1. 在此示例中,我已根据以下定义准备了文件。
          EmpID char(3)
          FirstName char(30)
          MiddleName char(30)
          LastName char(30)
          City char(30)
          PinCode char(6)
    2. 文件中提供的示例数据如下图所示。

    3. 单击“添加列”,输入列名,输入输入列宽度和输出列宽度。为使此示例简单,只需提供上面给出的列名和大小。
    4. 输入所有这些列详细信息后,连接管理器列将如下所示。

  • 单击“确定”。
  • 现在,可以使用以下列配置的平面文件源。

  • 单击“确定”。
  • 同样,我们需要配置数据要从中导入的目标连接。
  • 从“数据流目标”中拖动“ADO .NET 目标”并将其放入“数据流任务”中。

  • 从“平面文件源”中选择“成功约束”,并将其与“ADO .NET 目标”连接起来。

  • 现在,双击“ADO .NET 目标”,将打开以下窗口。

  • 单击“新建”。
  • 在“数据流连接”中单击“新建”。
  • 将服务器名称选择为“(local)”。
  • 选择“使用 Windows 身份验证”。如果需要,您也可以使用 SQL Server 身份验证。
  • 选择包含目标表的数据库名称。我选择 CodeProject 作为数据库。

  • 单击“确定”。

  • 单击“确定”。
  • 然后选择要导入数据的数据表。我有一个现有的表 "dbo"."EmpDetails",其表定义如下。如果您没有,则可以创建这样的表。
    CREATE TABLE [dbo].[EmpDetails]
    (
            [EmpID] [nvarchar](3) NULL,
            [FirstName] [nvarchar](30) NULL,
            [MiddleName] [nvarchar](30) NULL,
            [LastName] [nvarchar](30) NULL,
            [City] [nvarchar](30) NULL,
            [PinCode] [nchar](6) NULL
    )
  • 选择“预览”以检查一切是否符合预期。我得到如下预览窗口。

  • 单击“映射”。
  • 检查每个列是否已映射到相应的目标列。

  • 单击“确定”。
  • 最后,我们的屏幕将显示如下截图。

  • 右键单击并选择“执行任务”。
  • 数据流任务将执行,源文件中的数据将导入目标数据库表 “EmpDetails”。执行后,屏幕将显示如下截图。

  • 数据流任务将执行,源文件中的数据将导入目标数据库表 “EmpDetails”,并且表中的数据将如下面截图所示。

关注点

您可以在我的其他主题详细信息中找到 https://codeproject.org.cn/Articles/baliram-surya#articles

历史

  • 初稿
© . All rights reserved.