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

liv*_*ove 5 sql-server export

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

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

我的表中有一些nvarchar列.

我收到的消息是:

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

我已经尝试将"列映射"部分中的源列映射从Unicode字符串DT_WSTR更改为只是字符串DT_STR,但它不起作用.

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

use*_*973 6

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

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

这为我解决了以上问题。

  • “编辑您的 FLat 文件连接管理器”在哪里?我正在使用 SSMS 并遇到同样的问题(它抱怨我无法将 nvarchar(max) 字段导出到平面文件) (2认同)
  • @BjornW 当您运行导入/导出向导时,当您选择“平面源...”然后选择文件时,您将在浏览复选框 Unicode 下看到它。(必须先选择一个文件,否则它会呈灰色)希望有所帮助,我必须检查它才能导出我的 nvarchar(max)... (2认同)

Fle*_*lea 5

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

更改源列是最简单但并非总是一种选择。例如,我使用来返回一个定界列表,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]
Run Code Online (Sandbox Code Playgroud)

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

  • 在我研究这个问题的每一个地方,我都发现有东西说要使用数据转换组件,但我找不到任何解释数据转换组件是什么,也找不到如何使用它的内容。这非常令人沮丧! (2认同)