SSIS 平面文件目标导出多行列
SSIS Flat file destination export multi-line column
我有一个 SQL table 作为源,我想使用 SSIS 将它的内容导出到平面文件。
简化示例:
Source: Notes table (CreatedBy, Description, CreatedOn)
The Description field is nText.
Destination: Flat file - Fixed length
CreatedBy(0-50)
Description (51-250)
CreatedOn (251-270)
问题是描述可能很长,我们不希望它在 200
个字符后被截断。它应该换行到下一行。
我找不到使用 SSIS 执行此操作的方法。
非常感谢您的帮助。
更新
我希望实现如下布局:
CreatedBy | Description | CreatedOn|
John Really long description.............. 2/2/2017
more text..
John2 This is the second line 2/3/2017
Hadi 回答允许将长字符串分成几部分,但仍然没有解决布局问题。
您必须按照以下步骤操作:
在DataFlow Task
和OLEDB Source
之间添加s脚本组件Flat File Destination
在Script Component
标记Description
列作为输入,添加OutDescription
列作为输出列类型DT_WSTR
和长度200
在Script
window中写入如下代码(Inside Input0_RowProcessing
方法:
If Not Row.Description_IsNull AndAlso
Not String.IsNullOrEmpty(Row.Description.Trim) Then
If Row.Description.Trim.Length > 200 Then
Dim LongString As String = Row.Description.Trim
Dim longlist As New System.Collections.Generic.List(Of String)
Dim idx As Integer = 0
While idx <= LongString.Length
If LongString.Length < idx + 200 Then
longlist.Add(LongString.Substring(idx))
Else
longlist.Add(LongString.Substring(idx, 200))
End If
idx += 200
End While
Row.OutDescription = String.Join(vbNewLine & "".PadLeft(50,CChar(" ")), longlist)
Else
Row.OutDescription = Row.Description
End If
Else
Row.OutDescription_IsNull = True
End IF
在 Flat File Destination
中映射 OutDesciption
列而不是 Description
列
我有一个 SQL table 作为源,我想使用 SSIS 将它的内容导出到平面文件。
简化示例:
Source: Notes table (CreatedBy, Description, CreatedOn)
The Description field is nText.
Destination: Flat file - Fixed length
CreatedBy(0-50)
Description (51-250)
CreatedOn (251-270)
问题是描述可能很长,我们不希望它在 200
个字符后被截断。它应该换行到下一行。
我找不到使用 SSIS 执行此操作的方法。
非常感谢您的帮助。
更新
我希望实现如下布局:
CreatedBy | Description | CreatedOn|
John Really long description.............. 2/2/2017
more text..
John2 This is the second line 2/3/2017
Hadi 回答允许将长字符串分成几部分,但仍然没有解决布局问题。
您必须按照以下步骤操作:
在
DataFlow Task
和OLEDB Source
之间添加s脚本组件Flat File Destination
在
Script Component
标记Description
列作为输入,添加OutDescription
列作为输出列类型DT_WSTR
和长度200
在
Script
window中写入如下代码(InsideInput0_RowProcessing
方法:If Not Row.Description_IsNull AndAlso Not String.IsNullOrEmpty(Row.Description.Trim) Then If Row.Description.Trim.Length > 200 Then Dim LongString As String = Row.Description.Trim Dim longlist As New System.Collections.Generic.List(Of String) Dim idx As Integer = 0 While idx <= LongString.Length If LongString.Length < idx + 200 Then longlist.Add(LongString.Substring(idx)) Else longlist.Add(LongString.Substring(idx, 200)) End If idx += 200 End While Row.OutDescription = String.Join(vbNewLine & "".PadLeft(50,CChar(" ")), longlist) Else Row.OutDescription = Row.Description End If Else Row.OutDescription_IsNull = True End IF
在
Flat File Destination
中映射OutDesciption
列而不是Description
列