使用导入导出向导将数据从Excel导入Sql Server时,如何更改列的默认varchar 255?

问题描述 投票:8回答:3

我正在尝试使用导入向导将数据从excel导入Sql Server。第一步看起来一切都很好。该向导能够读取excel文件并正确识别列。但是在该过程实际运行的最后一步中,它失败并给出以下错误:

错误0xc020901c:数据流任务1:输出错误输出“ Excel Source Output”(9)上的“ AlternateName”列(24)。的返回的列状态为:“文本被截断或一个或多个目标代码页中的字符不匹配。”(SQL Server导入和导出向导)

错误0xc020902a:数据流任务1:“输出列“ AlternateName”(24)”失败,因为发生了截断,并且截断行“输出列“ AlternateName”(24)”上的配置指定失败截断。的指定对象发生截断错误指定的组件。 (SQL Server导入和导出向导)

错误0xc0047038:数据流任务1:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。组件“源”上的PrimeOutput方法-Sheet1 $“(1)返回了错误代码0xC020902A。该组件已返回当管道引擎调用PrimeOutput()时失败代码。的故障代码的含义由组件定义,但错误是致命的,管道停止执行。可能有错误在此之前发布的消息,其中包含有关失败的更多信息。(SQL Server导入和导出向导)

该列,AlternateName的最大数据长度为658个字符。目标表具有定义为varchar(1000)的AlternateName列。所以我不确定为什么会收到这个错误。但是后来我注意到了

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9wTU1tZS5wbmcifQ==” alt =“在此处输入图像描述”>

我预感这可能是导致问题的原因。但是,然后如何更改定义为varchar 255的Source列?

我正在尝试使用导入向导将数据从excel导入Sql Server。第一步看起来一切都很好。该向导能够读取excel文件并正确识别列。但是在...

sql-server import-from-excel
3个回答
8
投票

您可能需要在向导中编写您自己的查询,然后将列转换为varchar(1000)-我不确定100%可以运行。或者,床单有多大?该向导仅“向下看”这么多行(默认为IIRC 10000,它是注册表设置)来确定数据类型和宽度。重新排序excel文件,以使最长的AlternateName值位于顶部。


4
投票

我遇到了同样的问题,我发现一种解决方法是,根据导入到导出向导仅检查前200行,按照从最大到最小的单元格长度对大行并在Excel文档中引起问题的行进行排序。


0
投票

将Excel文件(版本97-2003)导入2016 SQL Server时遇到相同的问题。我的Excel文件有10列,但其中2列包含大字符数据(“ description”,“ output”),最多为600个字符。当我根据称为“ description”的列对excel进行排序时,出现上述截断错误再次为另一列(称为“输出”)显示,该列的行中数据也很大。即使我尝试根据“输出”列从最大到最小行进行排序,“描述”列也再次显示相同的错误。此外,当我将Excel导入2008 SQL Server时,执行后没有任何错误。错误只是在我要将文件导入到SQL Server 2016中时。如果有人解决了我的问题,以便将该Excel文件导入到2016 SQL Server中,我将不胜感激。

© www.soinside.com 2019 - 2024. All rights reserved.