因此,我目前正在使用 SSIS 2008 从旧的 Advantage 数据库服务器迁移到 SQL 2005。旧的 Advantage 数据库中的列之一是 MEMO 类型。默认情况下,这将转换为 DT_TEXT 列。好吧,在新数据库中,我不需要这么大的字段,但可以将其限制为诸如 VARCHAR(50) 之类的内容。我成功地设置了一个派生列转换,以使用以下表达式进行转换:
(DT_STR,50,1252)[ColumnName]
现在我想更进一步,用空字符串替换所有 NULL 值。使用表达式这似乎很容易ISNULL([ColumnName])?"":(DT_STR,50,1252)[ColumnName]
,但问题是 OLE DB 目标包含以下错误
无法在 unicode 和非 unicode 字符串之间转换...
所以显然整个 ISNULL 表达式将数据类型转换为 Unicode 字符串 [DT-WSTR]。我已经尝试对整个表达式或不同部分进行各种强制转换,但我无法获得与我需要的数据类型相匹配的数据类型。
首先,是否可以将DT_TEXT类型直接转换为unicode?据我所知,演员表不是那样工作的。如果没有,有没有办法让表达式工作,以便将 NULL 值转换为空字符串?
谢谢你的帮助!