SSIS脚本组件DT_TEXT换行符未正确存储在表中

时间:2019-06-08 08:19:08

标签: c# ssis script-component varcharmax

我需要将SSIS包“数据流脚本组件”中创建的大文本存储到数据类型为varchar(max)的目标列。因此,我将其用作输出列文本流[DT_TEXT]。在C#脚本中,我调用方法

AddBlobData(Encoding.Default.GetBytes(LARGE STRING WITH LINE BREAKES)) 

所有信息都存储在表中,但是不考虑换行符。

我尝试了不同的编码,例如ASCII,UTF8。另外,我尝试在每行\r\n的末尾添加,但结果没有变化。

StringBuilder sb = new StringBuilder();

sb.AppendLine("This is the first line.");
sb.AppendLine("This is the second line.");
sb.AppendLine("This is the third line.");

DataBuffer.AddRow();
DataBuffer.VarcharMaxColumn.AddBlobData(Encoding.Default.GetBytes(sb.ToString()));

结果:

  

这是第一行。这是第二行。这是第三行。

行之间有很大的空间,但我希望看到的不是换行符。

有人知道如何解决此问题吗?

2 个答案:

答案 0 :(得分:1)

我找到了自己问题的答案。似乎不可能将换行符从数据流脚本组件移到表中。不使用DT_STR,也不使用DT_TEXT。我花大量时间调查此事,发现这很困难。虽然,但我希望我错了。

同时,我正在使用一种变通方法,将各个行存储为不同的行,并将它们存储在临时表中。之后,我使用TSQL加入它们以将它们存储在目标表中。

    SELECT T2.[KeyColumn]
          ,(SELECT [VarcharMaxColumn] + CHAR(13) AS [text()]
              FROM [dbo].[TemporaryTable] AS T1
             WHERE T1.[KeyColumn] = T2.[KeyColumn]
          ORDER BY [SortOrder]
               FOR XML PATH(''), TYPE)
          ,T2.[AdditionalColumn]
      FROM [dbo].[TemporaryTable] AS T2
  GROUP BY T2.[KeyColumn], T2.[AdditionalColumn]

答案 1 :(得分:0)

尝试不使用字符串生成器:

import UIKit
import Firebase
import FirebaseDatabase


class ViewController: UIViewController {

    var ref: DatabaseReference!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        ref = Database.database().reference()

    }
}