SSIS 脚本组件 DT_TEXT 换行符未正确存储在 table 中
SSIS Script Component DT_TEXT newline not correctly stored in table
我需要将在 SSIS 包数据流脚本组件中创建的大文本存储到数据类型为 varchar(max) 的目标列。因此,我将 [DT_TEXT] 用作输出列文本流。在 C# 脚本中,我调用方法
AddBlobData(Encoding.Default.GetBytes(LARGE STRING WITH LINE BREAKES))
所有信息都存储在 table 中,但不考虑换行符。
我尝试了不同的编码,如 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()));
结果:
This is the first line. This is the second line. This is the third line.
两行之间有一个巨大的 space,但不是我期望看到的换行符。
有人知道如何解决这个问题吗?
尽量不要使用字符串生成器:
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));
我找到了我自己问题的答案。似乎不可能将换行符从数据流脚本组件带到 table。与 DT_STR
无关,与 DT_TEXT
无关。我花了很多时间调查这件事,才发现这一点很困难。虽然,我希望我是错的。
与此同时,我正在使用一种变通方法,将各行作为不同的行存储在临时 table 中。之后,我使用 TSQL 将它们存储在目标 table.
中
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]
我需要将在 SSIS 包数据流脚本组件中创建的大文本存储到数据类型为 varchar(max) 的目标列。因此,我将 [DT_TEXT] 用作输出列文本流。在 C# 脚本中,我调用方法
AddBlobData(Encoding.Default.GetBytes(LARGE STRING WITH LINE BREAKES))
所有信息都存储在 table 中,但不考虑换行符。
我尝试了不同的编码,如 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()));
结果:
This is the first line. This is the second line. This is the third line.
两行之间有一个巨大的 space,但不是我期望看到的换行符。
有人知道如何解决这个问题吗?
尽量不要使用字符串生成器:
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));
我找到了我自己问题的答案。似乎不可能将换行符从数据流脚本组件带到 table。与 DT_STR
无关,与 DT_TEXT
无关。我花了很多时间调查这件事,才发现这一点很困难。虽然,我希望我是错的。
与此同时,我正在使用一种变通方法,将各行作为不同的行存储在临时 table 中。之后,我使用 TSQL 将它们存储在目标 table.
中 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]