2

我需要将在 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()));

结果:

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

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

有谁知道如何解决这个问题?

4

2 回答 2

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]
于 2019-06-10T07:32:56.750 回答
0

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

string str;
str ="This is the first line." + Environment.NewLine + "This is the second line." + Environment.NewLine + "This is the third line."

DataBuffer.AddRow();
DataBuffer.VarcharMaxColumn.AddBlobData(Encoding.Default.GetBytes(str));
于 2019-06-08T23:38:24.137 回答