如何使用SSIS将固定宽度的平面文件导入数据库?

OBL*_*OBL 16 ssis flat-file

有没有人有关于如何使用SSIS包将固定宽度平面文件导入数据库的教程?

我有一个包含不同长度的列的平面文件.

Column name    Width
-----------    -----
First name        25
Last name         25
Id                 9
Date               8
Run Code Online (Sandbox Code Playgroud)

如何将平面文件转换为列?

小智 54

以下是使用SSIS 2008 R2创建的示例包,其中说明了如何将平面文件导入数据库表.

  • 创建一个Fixed_Width_File.txt以数据命名的固定宽度平面文件,如屏幕截图所示.屏幕截图使用Notepad ++显示文件内容.它能够显示回车和换行等特殊字符.CR LF表示行分隔符Carriage return和Line feed.

平面文件数据

  • 在SQL Server数据库中,dbo.FlatFile使用SQL Scripts部分下提供的create script 创建一个名为的表.

  • 创建一个新的SSIS包并添加一个新的OLE DB连接管理器,该管理器将连接到SQL Server数据库.我们假设OLE DB连接管理器被命名为SQLServer.

连接经理

  • 在包的控制流选项卡上,放置数据流任务.

数据流任务

  • 双击数据流任务,您将进入数据流选项卡.在数据流选项卡上,放置一个平面文件源.双击平面文件源,将出现平面文件源编辑器.单击" 新建"按钮以打开" 平面文件连接管理器编辑器".

  • 在" 平面文件源编辑器"的"常规"部分中,在" 连接管理器名称"(例如" 源")中输入一个值,然后浏览到平面文件位置并选择该文件.此示例使用路径中的示例文件C:\temp\Fixed_Width_File.txt如果文件中有标题行,则可以在标题行中输入值1以跳过文本框以跳过标题行.

平面文件连接管理器编辑器

  • 单击" 列"部分.根据您的选择更改字体我选择了Courier New,因此我可以看到更多数据,滚动更少.69在"行宽"文本框中输入值.此值是行分隔符的所有列的宽度+ 2的总和.设置正确的行宽后,应在"源数据列"部分正确查看固定宽度文件数据.现在,您必须单击适当的位置以确定列限制.请注意第4,5,6节以及下面的屏幕截图.

平面文件连接管理器编辑器列

  • 单击" 高级"部分.您将注意到,根据我们在上一步中的" 列"部分设置的列限制,自动为您创建了5列.第五列用于行分隔符.

平面文件连接管理器编辑器Advanced

  • 重命名列名FirstName,LastName,Id,Date和RowDelimiter

平面文件连接管理器编辑器高级重命名

  • 默认情况下,列将使用DataType字符串[DT_STR]进行设置.如果我们非常肯定,某个列将具有不同的数据类型,我们可以在"高级"部分中对其进行配置.我们将Id列数据类型four-byte signed integer [DT_I4]和Date列更改为数据类型date [DT_DATE]

平面文件连接管理器编辑器高级Id列

平面文件连接管理器编辑器高级日期列

  • 单击" 预览"部分.数据将按列配置显示.

平面文件连接管理编辑器预览

  • 在Flat文件连接管理器编辑器上单击" 确定 ",平面文件连接将分配给数据流任务中的"平面文件源".

平面文件编辑器连接

  • 在"平面文件源编辑器"上,单击"列"部分.您将注意到在平面文件连接管理器中配置的列.取消选中,RowDelimiter因为我们不需要它.

平面文件编辑器列

  • 在数据流任务上,放置一个OLE DB Destination.将Flat文件源的输出连接到OLE DB Destination.

数据流任务

  • 在OLE DB目标编辑器上,选择名为的OLE DB连接管理器,并将表SQLServer的名称或视图下拉列表设置为[dbo].[FlatFile]

OLE DB目标连接

  • 在OLE DB目标编辑器上,单击"映射"部分.由于平面文件连接管理器中的列名与数据库中的列相同,因此映射将自动进行.如果名称不同,则必须手动映射列.单击确定.

OLE DB目标列

  • 现在包准备好了.执行包以将固定宽度的平面文件数据加载到数据库中.

包执行

  • 如果在数据库中查询表dbo.FlatFile,您会注意到导入数据库的平面文件数据.

数据导入表中

此示例应该让您了解如何将固定宽度的平面文件导入数据库.它没有解释如何处理错误日志记录,但这应该可以让您开始并帮助您在使用软件包时发现其他与SSIS相关的功能.

希望有所帮助.

SQL Scripts:

CREATE TABLE [dbo].[FlatFile](
    [Id] [int] NOT NULL,
    [FirstName] [varchar](25) NOT NULL,
    [LastName] [varchar](25) NOT NULL,
    [Date] [datetime] NOT NULL
)
Run Code Online (Sandbox Code Playgroud)