如何在SSIS包中为常量文件中的所有行添加常量?

时间:2013-03-04 23:45:41

标签: ssis

我在控制流选项卡上有一个带有 Execute Process Task 的SSIS包。我在任务中调用 notepad.exe 来读取文本文件。我正在尝试将 \r\n 替换为 \r\n\test ,以便在所有行的第一列上添加文本测试作为前缀。你没有得到正确的结果。

文本文件数据:

Line 1{CR}{LF}
Line 2{CR}{LF}
Line 3

预期产出:

TestLine 1{CR}{LF}
TestLine 2{CR}{LF}
TestLine 3

我无法使用执行流程任务使用 notepad.exe 实现此输出。如何使用执行流程任务实现此输出? SSIS中是否还有其他任务可以做到这一点?

1 个答案:

答案 0 :(得分:2)

执行流程任务:

执行流程任务不适合您要执行的操作。您可以Script Task读取文件内容并在行前面添加您选择的文本,或者您可以使用 Data Flow Task 来实现相同的配置,而无需任何编码。< / p>

SSIS 2012包示例:

使用SSIS 2012创建的包下面说明了如何读取文本文件的内容,然后在每行前面加上一个文本短语,将输出写入另一个平面文件。

假设您需要读取名为 Products.txt 的文件,该文件包含以下信息,每行以回车符和换行符结尾 {{ 1}}

Source File

创建名为 {CR}{LF} 的SSIS包。此示例使用SQL Server数据工具(SSDT)2012创建程序包,但此示例中的逻辑适用于旧版SSIS版本2005到2008 R2。

SO_15213317.dtsx 拖放到控制流标签上。右键单击软件包底部的 Connection Manager 选项卡,然后单击 Data Flow Task 。此连接管理器将用于读取源文件。

SSIS Package

在“平面文件连接管理器编辑器”上,执行以下步骤:

  • 将名称设置为 New Flat File Connection...
  • 将说明设置为 FILE_Products
  • 浏览到文件所在的位置并选择文件。
  • 其余属性将根据文件中的数据继承。
  • 如果文件中有列标题,请选中 Read the products information from flat file.
  • 点击 Column names in the first data row 页面。

Flat File Connection Manager Editor - General

标签保留为默认设置,然后点击 Columns 页面。

Flat File Connection Manager Editor - Columns

高级页面将根据标题信息自动配置列名称,SSIS也会对数据类型进行很好的猜测。在这种情况下,它确定列数据类型是字符串。

Flat File Connection Manager Editor - Advanced

单击预览选项卡以查看文件数据。单击“确定”关闭“平面文件连接管理器编辑器”。

Flat File Connection Manager Editor - Preview

双击“控制流”选项卡上的数据流任务,切换到数据流选项卡。在数据流任务上,拖放 Advanced 以读取源文件。配置平面文件源,如下所示。

Flat File Source Editor - Connection Manager

列将自动配置。单击“确定”关闭“平面文件源编辑器”。

Flat File Source Editor - Columns

要在所有行上添加 Flat File Source 前缀,您需要使用 Test 。在平面文件源之后拖放派生列转换。将平面文件源连接到派生列转换。您可以添加新列或替换现有列。该示例使用以下表达式添加新列。此表达式将文本Test作为列 Derived Column Transformation 的传入值的前缀,然后键入将它们转换为长度为54个字符的SSIS数据类型DT_WSTR。

ProductName

Derived Column Transformation

拖放 (DT_WSTR,54)("Test" + ProductName) ,将输出写入另一个文本文件。在平面文件目标编辑器上,单击 Flat File Destination 按钮为目标文件创建新的平面文件连接管理器。

Flat File Destination Editor - Connection Manager

New... 对话框中选择 Delimited ,然后点击确定。

Flat File Format

在“平面文件连接管理器编辑器”上,执行以下步骤:

  • 将名称设置为 Flat File Format
  • 将说明设置为 FILE_NewProducts
  • 浏览到应保存文件的位置,并为文件命名。
  • 根据要求配置其余属性。
  • 如果您需要将列标题写入文件,请选中 Write the data to the new product flat file..
  • 点击 Column names in the first data row 页面。

Flat File Connection Manager - General

使用行和列分隔符配置“列”页面。

Flat File Connection Manager - Columns

高级页面上,点击 Columns 列,然后点击 ProductName 。您可以根据需要为列命名。

Flat File Connection Manager - Advanced

只有列 Delete 将保留在目标连接管理器上。单击确定。

Flat File Connection Manager - Advanced

平面文件目标编辑器上,确保选择正确的平面文件连接管理器。

File File Destination Editor - Connection Manager

单击 Mappings 页面以配置列映射以写入数据。

File File Destination Editor - Columns

配置数据流任务后,程序包应如下所示。

Data Flow Task

执行包以读取源文件并生成带有文本前缀的新输出文件。

Package Execution

新生成的文件NewProductName将包含前缀文字短语 NewProducts.txt

Output File

其他选项:

有多种不同的方法可以读取文件,您也可以使用 Test 读取文件。但是,此处的示例说明了在SSIS包中读取文本文件的适当方法。这可以让您了解如何设计处理平面文件或分隔文件的SSIS包。