SSIS 使用 UTF-8 将 OLEDB 源导出到平面文件
SSIS Export OLEDB Source to a Flat File with UTF-8
我正在尝试将 OLEDB 源(从存储过程)导出到 UTF-8 平面文件,但出现以下错误:
[平面文件目标 [2]]
Error: Data conversion failed. The data conversion for column "name" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.".
名称列在存储过程中定义为nvarchar(30)
。
在 OLEDB 源代码的高级编辑器中,我将 AlwaysUseDefaultCodePage 设置为 true 并将 DefaultCodePage 设置为 65001。
在用于外部列和输入列的平面文件的高级编辑器中,数据类型是长度为 30 的 Unicode 字符串 [DT-WSTR]。
平面文件的连接管理器未选中 Unicode 复选框,代码页为:65001 (UTF-8)。
我现在很困惑,如有任何帮助,我们将不胜感激。
谢谢,
大卫
编辑:
我将错误和截断的重定向添加到平面文件目标,但没有向文件发送任何内容。
此外,当我在 OLE DB 源上有一个数据查看器时,它会显示所有记录。
目的地的数据查看器也显示所有记录。两个查看器中的名称长度均为 30 个字符(来自 Excel)。
我放弃了让数据流正常工作,而是编写了一个 C# 脚本任务。
我通过选中平面文件连接管理器中的 Unicode 复选框,更改了数据流的输出以生成 Unicode 文件。
然后我让新的 C# 脚本一次读取 Unicode 文件一行,并使用 Encoding.UTF8 在行变量的末尾添加一个新行字符将该行输出到另一个平面文件。
创建新文件后,我删除了输入文件并将新文件重命名为与原始输入文件相同的路径和名称。这也在 C# 脚本中完成。
我正在尝试将 OLEDB 源(从存储过程)导出到 UTF-8 平面文件,但出现以下错误:
[平面文件目标 [2]]
Error: Data conversion failed. The data conversion for column "name" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.".
名称列在存储过程中定义为nvarchar(30)
。
在 OLEDB 源代码的高级编辑器中,我将 AlwaysUseDefaultCodePage 设置为 true 并将 DefaultCodePage 设置为 65001。
在用于外部列和输入列的平面文件的高级编辑器中,数据类型是长度为 30 的 Unicode 字符串 [DT-WSTR]。
平面文件的连接管理器未选中 Unicode 复选框,代码页为:65001 (UTF-8)。
我现在很困惑,如有任何帮助,我们将不胜感激。
谢谢, 大卫
编辑:
我将错误和截断的重定向添加到平面文件目标,但没有向文件发送任何内容。
此外,当我在 OLE DB 源上有一个数据查看器时,它会显示所有记录。
目的地的数据查看器也显示所有记录。两个查看器中的名称长度均为 30 个字符(来自 Excel)。
我放弃了让数据流正常工作,而是编写了一个 C# 脚本任务。
我通过选中平面文件连接管理器中的 Unicode 复选框,更改了数据流的输出以生成 Unicode 文件。
然后我让新的 C# 脚本一次读取 Unicode 文件一行,并使用 Encoding.UTF8 在行变量的末尾添加一个新行字符将该行输出到另一个平面文件。
创建新文件后,我删除了输入文件并将新文件重命名为与原始输入文件相同的路径和名称。这也在 C# 脚本中完成。