【发布时间】:2019-08-09 17:28:13
【问题描述】:
我正在 SSIS 中创建一个包,并且想将一个包含一列大列的文件转换为多列。
我有一个表,其中包含几行和一列原始数据。数据是从记事本文件中复制的,每一行都包含管道分隔符来分隔每一列,但是因为是记事本文件,所以每一行都被复制为一个大列。我想根据开始/结束位置将每行的每一列转换为多列。
我尝试使用带有 SUBSTRING 函数的 SSIS 派生列转换,但数据类型自动填充为 text stream[DT_TEXT],我收到以下错误:
[派生列[113]]出错;函数“SUBSTRING” 不支持参数号 1 的数据类型“DT_TEXT”。 参数的类型无法隐式转换为兼容的 函数的类型。要执行此操作,操作数需要 使用强制转换运算符显式强制转换。
[派生列[113]]出错;评估功能 “SUBSTRING”失败,错误代码为 0xC0047089。
[派生列[113]]出错;计算表达式 “SUBSTRING [RawData],1,5)”失败,错误代码为 0xC00470C5。这 表达式可能有错误,例如除以零,不能 在解析时检测到,或者可能存在内存不足错误。
[派生列[113]]出错;表达方式 “派生列。输出 [派生列”上的“SUBSTRING [RawData],1,5)” 输出].Coluns[Derived Column 1] 无效
[派生列[113]]出错;设置属性失败 “派生列”上的“表达式”。输出[派生列 输出].Columns[派生列 1]。 "
当我查看其他使用 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 个不同的列。
【问题讨论】:
标签: sql-server ssis etl derived-column