Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SSIS将固定宽度的平面文件导入数据库?_Ssis_Flat File - Fatal编程技术网

如何使用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

有人教过如何使用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数据库。假设OLEDB连接管理器的名称为SQLServer

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

  • 双击数据流任务,您将进入数据流选项卡。在“数据流”选项卡上,放置平面文件源。双击平面文件源,将显示平面文件源编辑器。单击“新建”按钮打开平面文件连接管理器编辑器

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

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

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

  • 将列名重命名为
    FirstName
    LastName
    Id
    Date
    rowdimiter

  • 默认情况下,将使用数据类型字符串[DT_STR]设置列。如果我们相当确定某个列将具有不同的数据类型,那么我们可以在高级部分对其进行配置。我们将
    Id
    列更改为数据类型
    4字节有符号整数[DT_I4]
    ,日期列更改为数据类型
    Date[DT_Date]

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

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

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

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

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

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

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

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

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

希望有帮助

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应该明确的内容

  • 固定长度行的宽度必须包括回车符和换行符(CR&LF)(我认为这是因为预览显示行排列不正确)
  • 定义一个额外的列以包含