尝试使用“任务/导出数据”菜单将表导出到平面文件。
我正在尝试导出到ANSI 1252代码页。
我的表中有一些nvarchar
列。
我收到的消息是:
数据类型为DT_NTEXT .... ANSI文件不支持...使用DT_TEXT代替,并使用数据转换组件将数据转换为DT_NTEXT。
我尝试将“列映射”部分中的源列映射从Unicode字符串DT_WSTR
更改为字符串DT_STR
,但它没有用。
是否可以在不更改表格的情况下导出到ANSI文件?有没有更简单的方法?我无法找到将源列更改为常规varchar
字符串的方法。
答案 0 :(得分:4)
如果无法更改源列,则必须使用数据转换组件转换数据。
更改最简单但不总是选项的源列。例如,我使用XML FOR PATH
返回分隔列表,因为我在存储过程中执行此操作,所以我需要做的就是将列转换为varchar(max)
并且错误消失且SSIS很高兴
select distinct
[WhatIfId],
cast(stuff
(
(
select
'; ' + plr.[Label]
from [dbo].[track_rate_override_reasons_instance] tor
join [dbo].[PickList_Loans_WhatIf_Rate_OverrideTypes] plt
on plt.[OverrideTypeId] = tor.[OverrideTypeId]
join [dbo].[PickList_Loans_WhatIf_Rate_OverrideReasons] plr
on plr.[ReasonId] = tor.[ReasonId]
FOR XML PATH ('')
)
, 1, 1, '') as varchar(max)) AS 'OverrideReasons'
from [dbo].[track_rate_override_reasons_instance]
您是否可以将源包装在存储过程中,以便可以操作转换?
答案 1 :(得分:0)
对于任何寻求替代解决方案的人;
这为我解决了以上问题。
答案 2 :(得分:0)
为了记录,我今天遇到了类似的问题。在DT_TEXT,DT_NTEXT,DT_WSTR,DT_STR之间改组数据类型,ANSI和UNICODE格式组合均无效。理解的问题是源字段的数据类型为varchar(max)-不知道为什么我们分配了此数据类型。将其更改为nvarchar(50),导出工作就没有任何问题,也不需要在导出向导中更改数据类型。