gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 14:30:07 25 4
gpt4 key购买 nike

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

我有一个平面文件,其中包含不同长度的列。

Column name    Width
----------- -----
First name 25
Last name 25
Id 9
Date 8


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

最佳答案

这是使用SSIS 2008 R2创建的示例程序包,说明了如何将平面文件导入数据库表。


如屏幕截图所示,使用数据创建一个名为Fixed_Width_File.txt的固定宽度的平面文件。屏幕快照使用Notepad ++来显示文件内容。它能够显示特殊字符,例如回车符和换行符。 CR LF表示行定界符回车和换行。





在SQL Server数据库中,使用“ SQL脚本”部分下提供的创建脚本创建名为dbo.FlatFile的表。
创建一个新的SSIS包并添加一个新的OLE DB连接管理器,该管理器将连接到SQL Server数据库。让我们假设OLE DB连接管理器被命名为SQLServer。





在包的控制流选项卡上,放置一个数据流任务。





双击数据流任务,您将进入数据流选项卡。在数据流选项卡上,放置一个平面文件源。双击平面文件源,将出现平面文件源编辑器。单击新建按钮以打开平面文件连接管理器编辑器。
在“平面文件源编辑器”的“常规”部分上,在“连接管理器”名称(例如“源”)中输入一个值,然后浏览到平面文件位置并选择文件。本示例在路径C:\temp\Fixed_Width_File.txt中使用示例文件。如果文件中包含标题行,则可以在“标题行跳过”文本框中输入值1,以跳过标题行。





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





单击高级部分。您会注意到,根据我们在上一步的“列”部分中设置的列限制,自动为您创建了5列。第五列是行定界符。





将列名称重命名为FirstNameLastNameIdDateRowDelimiter





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







单击预览部分。数据将按照列配置显示。





在平面文件连接管理器编辑器上单击“确定”,然后在数据流任务中将平面文件连接分配给平面文件源。





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





在数据流任务上,放置一个OLE DB Destination。将平面文件源的输出连接到OLE DB目标。





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





在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
)

关于ssis - 如何使用SSIS将固定宽度的平面文件导入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10289640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com