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

The data type is DT_NTEXT, which is not supported with ANSI files

正在尝试使用任务/导出数据菜单将 table 导出到平面文件。

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

我的 table 中有一些 nvarchar 列。

我收到消息:

The data type is DT_NTEXT .... which is not supported with ANSI files ... Use DT_TEXT instead and convert the data to DT_NTEXT using the data conversion component.

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

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

如果您无法更改源列,则必须使用数据转换组件来转换数据。

更改源列是最简单但并非总是可行的选项。例如,我使用 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]

您是否可以将源代码包装在存储过程中以便您可以操纵转换?

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

  • 编辑平面文件连接管理器
  • 在“常规”选项卡中
  • 勾选'Unicode',确定

这为我解决了上述问题。

记录一下,我今天遇到了类似的问题。在 DT_TEXT、DT_NTEXT、DT_WSTR、DT_STR 之间打乱数据类型,ANSI 和 UNICODE 格式组合都不起作用。了解问题出在数据类型为 varchar(max) 的源字段 - 不确定我们为什么分配此数据类型。将其更改为 nvarchar(50),导出工作没有任何问题,也无需在导出向导中更改数据类型。