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 回答允许将长字符串分成几部分,但仍然没有解决布局问题。

您必须按照以下步骤操作:

  1. DataFlow TaskOLEDB Source之间添加s脚本组件Flat File Destination

  2. Script Component标记Description列作为输入,添加OutDescription列作为输出列类型DT_WSTR和长度200

  3. Scriptwindow中写入如下代码(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
    
  4. Flat File Destination 中映射 OutDesciption 列而不是 Description