有没有人有关于如何使用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以跳过文本框以跳过标题行.

69在"行宽"文本框中输入值.此值是行分隔符的所有列的宽度+ 2的总和.设置正确的行宽后,应在"源数据列"部分正确查看固定宽度文件数据.现在,您必须单击适当的位置以确定列限制.请注意第4,5,6节以及下面的屏幕截图.

FirstName,LastName,Id,Date和RowDelimiter
Id列数据类型four-byte signed integer [DT_I4]和Date列更改为数据类型date [DT_DATE]



RowDelimiter因为我们不需要它.
OLE DB Destination.将Flat文件源的输出连接到OLE DB Destination.
SQLServer的名称或视图下拉列表设置为[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)