【问题标题】:The data type is DT_NTEXT, which is not supported with ANSI files数据类型为 DT_NTEXT,ANSI 文件不支持
【发布时间】:2015-07-27 19:56:57
【问题描述】:

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

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

我的表中有一些 nvarchar 列。

我收到了消息:

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

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

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

【问题讨论】:

    标签: sql-server export


    【解决方案1】:

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

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

    这为我解决了上述问题。

    【讨论】:

    • 这也解决了我的问题,尝试将数据从 MSSQL 移动到 Postgres
    • “编辑您的 FLat 文件连接管理器”在哪里?我正在使用 SSMS 并且遇到同样的问题(它抱怨我无法将 nvarchar(max) 字段导出到平面文件)
    • @BjornW 当您运行导入/导出向导时,当您选择“平面源...”然后选择文件时,您将在浏览下看到它,复选框 Unicode。 (必须先选择一个文件,否则它会变灰)希望有帮助,我必须检查它才能让我的 nvarchar(max) 导出...
    • 另外,通过下拉菜单dba.stackexchange.com/a/215816将代码页设置为65001(UTF-8)
    【解决方案2】:

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

    更改源列是最简单但并不总是一种选择。例如,我正在使用 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]
    

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

    【讨论】:

    • 什么是数据转换组件?
    • 数据转换组件是否可以与 SQL Server Management Studio 的导出向导一起使用?我发现按照您的建议更改我的 SQL 查询最适合我的情况。
    • 无论我去哪里研究这个问题,我都发现有人说要使用数据转换组件,但我找不到任何解释数据转换组件是什么以及如何使用它的东西。这很令人沮丧!
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2015-12-28
      • 2011-06-21
      • 2019-10-25
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2020-12-01
      相关资源
      最近更新 更多