SSIS - 将DT_TEXT(长度11,000个字符)转换为DT_STR并修剪为1,000个字符

时间:2015-02-11 13:32:07

标签: sql-server ssis sql-server-2012 type-conversion

我想从文本文件(.csv)中读取数据,将其中一个列截断为1000个字符,然后使用SSIS包推入SQL表。

输入(DT_TEXT)长度为11,000个字符,但我的挑战是......

  • 仅当最大长度为8,000个字符时,SSIS才能转换为(DT_STR)。
  • 无法在Stream(DT_TEXT数据类型)
  • 上执行字符串操作

2 个答案:

答案 0 :(得分:3)

现在有一个解决方法/解决方案; 我截断平面文件源中的文本并选择忽略错误的选项;

如果您找到更好的解决方案,请分享!

供参考: Truncating8000PlusCharsInSSIS

答案 1 :(得分:1)

为了帮助找到这个的其他人,我在一个派生列转换任务中使用文本流[DT_TEXT]时将更多的类似概念应用于数据流中,以将其转换为[DT_WSTR]类型到我定义的长度。这更容易引起转换。

表达式:(DT_WSTR,1000)(DT_STR,1000,1252)myLargeTextColumn
数据类型:Unicode字符串[DT_WSTR]
长度:1000

*我使用1252代码页,因为我的DT_TEXT是UTF-8编码。

对于此派生列,我还在高级编辑器中将TruncationRowDisposition设置为RD_IgnmoreFailure(或者可以在配置错误输出中完成,将截断设置为“忽略失败”)

(我发布了图片,但显然我需要提升我的代表)