根据字段值拆分 ssis 中的行
Split rows in ssis based on a field value
在 SSIS 中 - 如何将行中的数据拆分为 2 行
例如:
发件人:
ID Data
1 On/Off
2 On/Off
至:
ID Data
1 On
1 Off
2 On
2 Off
解决方案概述
您必须使用脚本组件来实现此目的。使用非同步输出缓冲区根据您自己的逻辑从一行生成多行。
解决方案详细信息
- 添加数据流任务
- 在
DataFlow Task
中添加 Flat File Source
、Script Component
和目的地
- 在脚本组件中,select
ID
、Data
列作为输入
- 转到
Input and Outputs
页面,单击输出并将 Synchronous Input
属性 更改为 none
- 将两个输出列
ID
和 Data
添加到 Output
- 将脚本语言更改为
Visual Basic
在脚本编辑器中编写以下代码
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
Dim strValues() as String = Row.Data.Split(CChar("/")
For each str as String in strValues
Output0Buffer.AddRow()
Output0Buffer.ID = Row.ID
Output0Buffer.Data = str
Next
End Sub
附加信息
有关详细信息,请遵循这些 links:
- SSIS - Script Component, Split single row to multiple rows
- Output multiple rows from script component per single row input
使用 T-SQL
根据您的评论,这是一个 link,其中包含一个示例,说明如何使用 SQL 命令
- Turning a Comma Separated string into individual rows
在 SSIS 中 - 如何将行中的数据拆分为 2 行 例如:
发件人:
ID Data
1 On/Off
2 On/Off
至:
ID Data
1 On
1 Off
2 On
2 Off
解决方案概述
您必须使用脚本组件来实现此目的。使用非同步输出缓冲区根据您自己的逻辑从一行生成多行。
解决方案详细信息
- 添加数据流任务
- 在
DataFlow Task
中添加Flat File Source
、Script Component
和目的地 - 在脚本组件中,select
ID
、Data
列作为输入 - 转到
Input and Outputs
页面,单击输出并将Synchronous Input
属性 更改为none
- 将两个输出列
ID
和Data
添加到Output
- 将脚本语言更改为
Visual Basic
在脚本编辑器中编写以下代码
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) Dim strValues() as String = Row.Data.Split(CChar("/") For each str as String in strValues Output0Buffer.AddRow() Output0Buffer.ID = Row.ID Output0Buffer.Data = str Next End Sub
附加信息
有关详细信息,请遵循这些 links:
- SSIS - Script Component, Split single row to multiple rows
- Output multiple rows from script component per single row input
使用 T-SQL
根据您的评论,这是一个 link,其中包含一个示例,说明如何使用 SQL 命令
- Turning a Comma Separated string into individual rows