我正在 SSIS 中创建一个包,并希望将一个大列的文件转换为多列。
我有一个表,其中包含几行和一列原始数据。数据是从记事本文件中复制的,每一行都包含管道分隔符来分隔每一列,但是因为是记事本文件,所以每一行都被复制为一个大列。我想根据它们的开始/结束位置将每行的每一列转换为多列。
我尝试将 SSIS 派生列转换与SUBSTRING
函数一起使用,但数据类型自动填充为text stream[DT_TEXT]
,并且出现以下错误:
[派生列[113]]出错;函数“SUBSTRING”不支持参数编号 1 的数据类型“DT_TEXT”。无法将参数的类型隐式转换为函数的兼容类型。要执行此操作,需要使用强制转换运算符显式强制转换操作数。
[派生列[113]]出错;评估函数“SUBSTRING”失败,错误代码为 0xC0047089。
[派生列[113]]出错;计算表达式“SUBSTRING[RawData],1,5)”失败,错误代码为 0xC00470C5。表达式可能有错误,例如除以零,在解析时无法检测到,或者可能存在内存不足错误。
[派生列[113]]出错;"Derived Column.Outputs[Derived Column Output].Coluns[Derived Column 1] 上的表达式 "SUBSTRING[RawData], 1,5)" 无效
[派生列[113]]出错;无法在“Derived Column.Outputs[Derived Column Output].Columns[Derived Column 1] 上设置属性“Expression”。
SUBSTRING
当我查看使用包含单个列的文件的其他派生列转换插图时,我注意到数据类型显示为DT_WSTR
.
我需要转换成这种数据类型吗?如果是这样,我如何在 SSIS 派生列转换中使用转换运算符显式转换DT_TEXT
数据类型?DT_WSTR
否则,我还能如何处理这种转换?
Derived Column Name: EmployerNo
Derived Column: Replace 'RawData'
Expression: SUBSTRING( [RawData], 1, 5 )
Data Type: text stream[DT_TEXT]
我希望 RawData 列根据它们的开始和结束位置被拆分(转换)为 8 个不同的列。