原始文件目标

原始文件目标将原始数据写入文件。因为数据的格式是目标的本机格式,所以数据无需转换,并且几乎不需要分析。这意味着原始文件目标可以比其他目标(如平面文件和 OLE DB 目标)更快地写入数据。

可以用下列方式配置原始文件目标:

  • 指定访问模式,此访问模式可以是原始文件目标要写入的文件的名称,也可以是包含此文件名称的变量。

  • 指示原始文件目标是将数据追加到具有相同名称的现有文件中,还是创建新文件。

原始文件目标经常用于在包执行之间写入经部分处理的数据的中间结果。存储原始数据意味着数据可以由原始文件源快速读取,然后在将其加载到其最终目标之前进一步转换。例如,包可能运行多次,每次都将原始数据写入文件。随后,其他包可以使用原始文件源从每个文件读取,使用 Union All 转换将数据合并为一个数据集,然后应用其他转换在将数据加载到其最终目标(如 SQL Server 表)之前编写数据摘要。

注意注意

原始文件目标支持空数据,但不支持二进制大型对象 (BLOB) 数据。

注意注意

原始文件目标不使用连接管理器。

此源具有一个常规输入。它不支持错误输出。

追加和新建文件选项

WriteOption 属性包含向现有文件中追加数据或创建新文件的选项。

注意注意

追加操作要求追加数据的元数据与文件中已有数据的元数据匹配。

下表介绍 WriteOption 属性的可用选项。

选项

说明

追加

将数据追加到现有文件中。追加数据的元数据必须与文件格式匹配。

始终创建

始终创建新文件。

创建一次

创建新文件。如果该文件已经存在,该组件将失败。

截断和追加

截断现有文件,然后将数据写入此文件。追加数据的元数据必须与文件格式匹配。

在循环中使用原始文件目标

如果使用原始文件目标的数据流位于循环中,您可能要创建一次文件,然后在循环重复时向该文件中追加数据。若要向该文件中追加数据,要追加的数据必须与现有的文件格式匹配。

若要在循环的第一次迭代中创建文件,然后在循环的后续迭代中追加行,您需要在设计时执行下列操作:

  1. WriteOption 属性设置为 CreateOnceCreateAlways并运行循环的一次迭代过程。此时将创建文件。这可确保追加数据的元数据与文件匹配。

  2. WriteOption 属性重置为**“追加”**并将 ValidateExternalMetadata 属性设置为 False。

如果使用 TruncateAppend 选项而不是 **“追加”**选项,此操作将截断以前的任何迭代过程中所添加的行,然后追加新行。使用 TruncateAppend 选项也要求数据与文件格式相匹配。

使用不存在的原始文件的格式

如果要使用现有原始文件的格式,但该文件在运行时不可用,您可以在设计时指定现有原始文件,以此获取原始文件目标所需的元数据。在部署包之前,请将原始文件目标的 ValidateExternalMetadata 属性设置为 false。在运行时将创建具有正确格式的新文件。这种情况中,如果 ValidateExternalMetadata 未设置为 false,则包在运行时将无法通过验证。

配置原始文件目标

可以通过 SSIS 设计器或以编程方式来设置属性。

**“高级编辑器”对话框反映了可以通过编程方式进行设置的属性。有关可以在“高级编辑器”**对话框中或以编程方式设置的属性的详细信息,请单击下列主题之一:

有关如何设置属性的详细信息,请参阅如何设置数据流组件的属性

外部资源

sqlservercentral.com 上的博客项原始文件令人生畏

Integration Services 图标(小) 使 Integration Services 保持最新

若要从 Microsoft 获得最新的下载内容、文章、示例和视频,以及从社区获得所选解决方案,请访问 MSDN 上的 Integration Services 页:


若要获得有关这些更新的自动通知,请订阅该页上提供的 RSS 源。