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






4.33/5 (4投票s)
本文提供了将固定长度文件数据导入 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。
在“常规设置”中,单击“浏览”按钮并选择包含数据的文件的位置。
选择格式为“固定宽度”。
选择“高级”选项卡。现在,在这里,我们需要选择每个列的属性。
- 在此示例中,我已根据以下定义准备了文件。
EmpID char(3) FirstName char(30) MiddleName char(30) LastName char(30) City char(30) PinCode char(6)
- 文件中提供的示例数据如下图所示。
- 单击“添加列”,输入列名,输入输入列宽度和输出列宽度。为使此示例简单,只需提供上面给出的列名和大小。
- 输入所有这些列详细信息后,连接管理器列将如下所示。
- 在此示例中,我已根据以下定义准备了文件。
- 单击“确定”。
- 现在,可以使用以下列配置的平面文件源。
- 单击“确定”。
- 同样,我们需要配置数据要从中导入的目标连接。
- 从“数据流目标”中拖动“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。
历史
- 初稿