首页 > 解决方案 > 加载到 SQL Server 表时如何防止 SSIS 截断文本字段

问题描述

我有一个带有 Excel 源和 OLD DB 目标的数据流任务。电子表格是从不同系统中提取的报告。它包括一个注释列,其中每一行都有不同长度的文本。

我的 SQL Server 表列定义为nvarchar(max). 我可以得到包来加载数据,一切看起来都很好。但是,第二天当我拉报告并尝试上传数据时,有时会收到一条消息。

以下输出列的元数据与外部列的元数据不匹配......

我一直在谷歌搜索这个错误,我发现一些评论表明包运行时,它会查看前几行数据以验证数据类型。我相信正在发生的事情是,当我最初创建并运行包时,电子表格的前几行在评论列中包含超过 255 个字符,因此 Excel 编辑器将数据类型显示为 Unicode 文本流 ( DT_NTEXT)。第二天,当我运行相同的包,但更新了 excel 连接管理器以指向新的 days 电子表格时,电子表格的前几行不包含任何字符超过 255 的注释。在这种情况下,我收到了消息:

以下的元数据......

无论我单击“是”还是“否”,Excel 的编辑器都会将 DataType 更改为 Unicode 字符串 ( DT_WSTR)。发生这种情况时,正在加载的数据将在评论列中限制为 255 个字符。

从第二天开始,我检查了电子表格,其中确实包含评论超过 255 个字符的行。他们只是不在前 8 行左右。

综上所述,有没有办法防止这种情况发生,这样我就可以确保无论我在哪一天拉/加载电子表格,也不管前 8 行的评论是否超过 255 个字符,数据流处理会将所有注释加载到我的 SQL Server 表中,并且不会在 255 个字符后截断任何注释。

我尝试在 Excel Source 和 OLD DB Destination 步骤之间添加数据转换,但这并没有解决问题。

您可以提供的任何帮助将不胜感激。

标签: ssis-2017

解决方案


推荐阅读