执行流程任务:
执行流程任务不适合您尝试执行的任务。您可以Script Task
读取文件内容并在行前加上您选择的文本,或者您可以使用Data Flow Task
来通过配置实现相同的目的,而无需任何编码。
SSIS 2012 包说明了一个示例:
下面使用 SSIS 2012 创建的包说明了如何读取文本文件的内容,然后在每行前面加上一个文本短语,以将输出写入不同的平面文件。
假设您需要读取一个名为的文件,该文件Products.txt
具有以下信息,每行以回车符和换行符结尾{CR}{LF}
创建一个名为SO_15213317.dtsx
. 此示例使用 SQL Server Data Tools (SSDT) 2012 创建包,但此示例中的逻辑适用于较旧的 SSIS 版本 2005 至 2008 R2。
将 a 拖放Data Flow Task
到“控制流”选项卡上。右键单击包底部的Connection ManagerNew Flat File Connection...
选项卡,然后单击。此连接管理器将用于读取源文件。
在平面文件连接管理器编辑器上,执行以下步骤:
- 将名称设置为
FILE_Products
- 将描述设置为
Read the products information from flat file.
- 浏览到文件所在的位置并选择文件。
- 其余属性将根据文件中的数据继承。
Column names in the first data row
如果文件中有列标题,请选中该框
- 点击
Columns
页面。
将“列”选项卡保留为默认设置,然后单击Advanced
“页面”。
高级页面会根据标题信息自动配置列名,SSIS 也会对数据类型做出很好的猜测。在这种情况下,它决定列数据类型是字符串。
单击“预览”选项卡以简单地查看文件数据。单击确定关闭平面文件连接管理器编辑器。
双击控制流选项卡上的数据流任务以切换到数据流选项卡。在 Data Flow Task 上,拖放 aFlat File Source
以读取源文件。如下所示配置平面文件源。
列将自动配置。单击确定关闭平面文件源编辑器。
要在所有行上为文本添加前缀Test
,您需要使用Derived Column Transformation
. 在平面文件源之后拖放一个派生列转换。将平面文件源连接到派生列转换。您可以添加新列或替换现有列。该示例使用以下表达式添加一个新列。此表达式将文本 Test 作为列的传入值的前缀ProductName
,然后将它们类型转换为长度为 54 个字符的 SSIS 数据类型 DT_WSTR。
(DT_WSTR,54)("Test" + ProductName)
拖放 aFlat File Destination
以将输出写入另一个文本文件。在Flat File Destination Editor上,单击New...
按钮为目标文件创建一个新的 Flat File Connection Manager。
Delimited
在Flat File Format
对话框中选择并单击确定。
在平面文件连接管理器编辑器上,执行以下步骤:
- 将名称设置为
FILE_NewProducts
- 将描述设置为
Write the data to the new product flat file..
- 浏览到应保存文件的位置并为文件命名。
- 根据要求配置其余属性。
Column names in the first data row
如果您需要将列标题写入文件,请选中该框
- 点击
Columns
页面。
使用行和列分隔符配置列页面。
在“高级”页面,单击列ProductName
列,然后单击Delete
。您可以随意命名该列。
只有该列NewProductName
将保留在目标连接管理器上。单击确定。
在Flat File Destination Editor上,确保选择正确的平面文件连接管理器。
单击“映射”页面以配置列映射以写入数据。
配置数据流任务后,包应如下所示。
执行包读取源文件并生成带有文本前缀的新输出文件。
新生成的文件NewProducts.txt
将包含前缀文本短语Test
其他选项:
有多种不同的方式来读取文件,您也可以使用Script Task
. 但是,此处的示例说明了读取 SSIS 包中的文本文件的适当方法。这应该让您了解如何设计处理平面文件或分隔文件的 SSIS 包。