如何使用SSIS将固定宽度的平面文件导入数据库?
有人教过如何使用SSIS包将固定宽度平面文件导入数据库吗 我有一个包含不同长度列的平面文件如何使用SSIS将固定宽度的平面文件导入数据库?,ssis,flat-file,Ssis,Flat File,有人教过如何使用SSIS包将固定宽度平面文件导入数据库吗 我有一个包含不同长度列的平面文件 Column name Width ----------- ----- First name 25 Last name 25 Id 9 Date 8 如何将平面文件转换为列?下面是一个使用SSIS 2008 R2创建的示例包,它解释了如何将平面文件导入数据库表 创建一个名为fixed_width_fi
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数据库。假设OLEDB连接管理器的名称为SQLServer
- 在包的“控制流”选项卡上,放置数据流任务
- 双击数据流任务,您将进入数据流选项卡。在“数据流”选项卡上,放置平面文件源。双击平面文件源,将显示平面文件源编辑器。单击“新建”按钮打开平面文件连接管理器编辑器
- 在平面文件源编辑器的“常规”部分,在“连接管理器名称”(例如“源”)中输入一个值,然后浏览到平面文件位置并选择该文件。此示例使用路径
如果文件中有标题行,可以在标题行跳过文本框中输入值1以跳过标题行C:\temp\Fixed\u Width\u file.txt中的示例文件
- 单击Columns部分。根据您的选择更改字体我选择了Courier New,这样我可以用较少的滚动查看更多数据。在行宽文本框中输入值
。此值是所有列的宽度加上行分隔符的2之和。设置了正确的行宽度后,应该可以在“源数据列”部分正确地看到固定宽度文件数据。现在,您必须在适当的位置单击以确定列限制。请注意下面屏幕截图中的第4、5、6和6节69
- 点击高级部分。您会注意到,根据我们在上一步的columns部分中设置的列限制,自动为您创建了5列。第五列是行分隔符
- 将列名重命名为
、FirstName
、LastName
、Id
和Date
rowdimiter
- 默认情况下,将使用数据类型字符串[DT_STR]设置列。如果我们相当确定某个列将具有不同的数据类型,那么我们可以在高级部分对其进行配置。我们将
列更改为数据类型Id
,日期列更改为数据类型4字节有符号整数[DT_I4]
Date[DT_Date]
- 单击预览部分。数据将按照列配置显示李>
- 单击平面文件连接管理器编辑器上的“确定”,平面文件连接将分配给数据流任务中的平面文件源
- 在平面文件源编辑器上,单击“列”部分。您将注意到在平面文件连接管理器中配置的列。取消选中
,因为我们不需要它行分隔符
- 在数据流任务上,放置一个
。将平面文件源的输出连接到OLE DB目标OLE DB目标
- 在OLE DB目标编辑器上,选择名为
的OLE DB连接管理器,并将表或视图下拉列表的名称设置为SQLServer
[dbo].[FlatFile]
- 在OLEDB目标编辑器上,单击映射部分。由于平面文件连接管理器中的列名与数据库中的列相同,因此映射将自动进行。如果名称不同,则必须手动映射列。单击“确定”
- 现在包裹准备好了。执行包以将固定宽度平面文件数据加载到数据库中
- 如果在数据库中查询表dbo.FlatFile,您将注意到导入数据库的平面文件数据
SQL脚本
:
CREATE TABLE [dbo].[FlatFile](
[Id] [int] NOT NULL,
[FirstName] [varchar](25) NOT NULL,
[LastName] [varchar](25) NOT NULL,
[Date] [datetime] NOT NULL
)
在派生列转换中,可以对每个列使用SUBSTRING()函数。 示例: 列派生列 FirstName子字符串(数据、起始、长度)
这里第一个名字有宽度25,所以如果我们考虑从零个位置然后在派生列中,你应该通过给出子串(数据,0, 25)来指定它;p>
其他专栏也是如此。解释得很好,湿婆!您的教程和优秀的插图指出了Microsoft应该明确的内容