数据类型为DT_NTEXT,ANSI文件不支持

时间:2015-07-27 19:56:58

标签: sql-server export

尝试使用“任务/导出数据”菜单将表导出到平面文件。

我正在尝试导出到ANSI 1252代码页。

我的表中有一些nvarchar列。

我收到的消息是:

  

数据类型为DT_NTEXT .... ANSI文件不支持...使用DT_TEXT代替,并使用数据转换组件将数据转换为DT_NTEXT。

我尝试将“列映射”部分中的源列映射从Unicode字符串DT_WSTR更改为字符串DT_STR,但它没有用。

是否可以在不更改表格的情况下导出到ANSI文件?有没有更简单的方法?我无法找到将源列更改为常规varchar字符串的方法。

3 个答案:

答案 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)

对于任何寻求替代解决方案的人;

  • 编辑您的平面文件连接管理器
  • “常规”标签
  • 勾选'Unicode',确定

这为我解决了以上问题。

答案 2 :(得分:0)

为了记录,我今天遇到了类似的问题。在DT_TEXT,DT_NTEXT,DT_WSTR,DT_STR之间改组数据类型,ANSI和UNICODE格式组合均无效。理解的问题是源字段的数据类型为varchar(max)-不知道为什么我们分配了此数据类型。将其更改为nvarchar(50),导出工作就没有任何问题,也不需要在导出向导中更改数据类型。