我从excel表导入数据。我正在努力解决以下问题 -
- 执行(错误)消息错误0xc020901c:数据流任务1:输出“Excel源输出”(9)上的输出列“智能”(21)出错。返回的列状态为:“文本被截断,或者目标代码页中的一个或多个字符不匹配。”。 (SQL Server导入和导出向导)
- 错误0xc020902a:数据流任务1:“输出列”智能“(21)”失败,因为发生了截断,并且“输出列”智能“(21)”上的截断行处置指定了截断失败。指定组件的指定对象上发生截断错误。 (SQL Server导入和导出向导)
- 错误0xc0047038:数据流任务1:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。组件“Source - MainSheetData $”(1)上的PrimeOutput方法返回错误代码0xC020902A。当管道引擎调用PrimeOutput()时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。 (SQL Server导入和导出向导)
我正用同样的错误将我的头撞在墙上。
尝试导入到MS Access,然后导入到SQL Server。
事实证明它只检查Excel工作表的前8行左右。如果它确定长度是225并且稍后遇到超过225个字符时发生错误,我做的解决问题的方法是制作第一个包含最糟糕的情况(最大的一切)和问题解决了!
第一个错误告诉您,Intelligence列的源数据要比目标列长,要么包含目标列无法接受的字符。
第二个错误告诉您,Intelligence列比目标列长,因此失败。我希望这是真正的问题。
你也可以
我遇到了同样的问题,虽然我在这里搜索了很多建议但是对我有用的选项是将excel文件转换为CSV
并使用bulk insert
命令代替。
这绕过了编辑对我不起作用的映射的需要。当我更改字段类型时,我有一个没有更新的字段。
以下代码来自this answer:
BULK INSERT TableName
FROM 'C:\SomeDirectory\my table.txt'
WITH
(
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n'
)
GO
使用CSV导入很困难,因为导入过程不知道任何字段的最大长度。因此,当它遇到比初始列长度更长的行时,它会出错。
只需将您的csv文件保存为Excel工作簿并重新导入即可。您需要删除上次故障前创建的现有表。
因为它很好,它可以在创建表时获得正确的字段长度。
从Excel导入到SQL Server 2008时,我遇到了同样的错误。我可以通过从xlsx导出到csv然后将csv文件导入Sql Server来实现。是的,我必须手动调整柱长,但它工作得很好!
我遇到了同样的问题,不得不手动通过Excel找到问题。一次性保护,如果您点击底部的报告 - >查看报告,它将打开一个新窗口。如果您一直滚动到报表的底部,它将告诉您处理了多少行。它并不一定意味着问题出现在下一行,但至少可以在此之前跳过所有行。
我在Excel中接下来做的是只占用适合SQL的字符数量(即LEFT([Column],255)并截断其余部分。
这不是理想的,但它在我的情况下起作用。
您需要将“On Error”选项更改为Ignore,并将“On Truncation”选项更改为Review in Review Data Type Mapping。这将解决问题。
我不确定,如果有人试过这个:
从excel .xls或其当前的任何excel格式复制文件的内容,并将其作为值粘贴到新的Excel文件中。以.xlsx格式保存文件,然后尝试使用sql server重新导入。
这将是一次成功!!