我正在研究ssis包,它将数据从SQL Server导出到Excel。我在将非unicode转换为unicode字符串数据类型时遇到了问题。所以我创建了一个派生的Column任务并转换为Unicode字符串[DT_WSTR] 4列,在SQL Server表中有一个类型Varchar(40)。它适用于这些专栏。但我也有一个varchar(max)类型的Description列,我试图将它转换为Unicode文本流[DT_NTEXT]。那没起效。
答案 0 :(得分:0)
如果您的源是SQL Server(如您所说),您可以直接在SQL查询中转换它
SELECT
CONVERT(NVARCHAR(40), 'att1')
,CONVERT(NTEXT, 'att2')
将您的VARCHAR转换为 NVARCHAR 将您的TEXT转换为 NTEXT
它更快。
P.S。测试它(不要忘记删除或重置以前的OLE DB输入组件) - >它将被迫重新评估您的数据类型
对你有帮助吗?
答案 1 :(得分:0)
唯一有效的方法是将存储过程中的描述列转换为varchar(1000)。我检查了这个字段的最大长度,大约有300个字符。所以我把它作为varchar(1000)并在Derived列中使用Unicode字符串[DT_WSTR]。这是一种解决方法,但我仍然想知道如何在ssis包中创建它而不在存储过程中转换数据类型。