从Excel导入数据时出现SQL错误

我从Excel表导入数据。 我正在努力解决以下问题 –

  • 执行(错误)消息错误0xc020901c:数据stream任务1:输出“Excel源输出”(9)上的输出列“Intelligence”(21)出错。 返回的列状态是:“文本被截断或者一个或多个字符在目标代码页中没有匹配”。 (SQL Server导入和导出向导)

  • 错误0xc020902a:数据stream任务1:由于截断发生,“输出列”Intelligence“(21)”失败,“输出列”Intelligence“(21)”上的截断行configuration指定截断失败。 指定组件的指定对象上发生截断错误。 (SQL Server导入和导出向导)

  • 错误0xc0047038:数据stream任务1:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。 组件“Source – MainSheetData $”(1)上的PrimeOutput方法返回了错误代码0xC020902A。 pipe道引擎调用PrimeOutput()时,组件返回失败代码。 失败代码的含义由组件定义,但错误是致命的,并且pipe道停止执行。 在此之前可能会发布错误消息,提供有关失败的更多信息。 (SQL Server导入和导出向导)

我正把头撞在墙上,同样的错误。

尝试导入到MS Access, 然后导入到SQL Server。

第一个错误是告诉你,智能列的源数据要么长于目标列,要么包含目标列无法接受的字符。

第二个错误是告诉你,智能列比你的目标列长,因此它的失败。 我期望这是真正的问题。

你也可以

  • 扩大您的目标列的大小,以涵盖更大的input或
  • 切换组件的错误输出到“忽略失败”

我有同样的问题,虽然我尝试了很多来自这里search的build议,但对我来说,选项是将excel文件转换为CSV并使用bulk insert命令。

这绕过了编辑不适合我的映射的需要。 当我更改字段types时,我有一个字段没有更新。

下面的代码从这个答案 :

 BULK INSERT TableName FROM 'C:\SomeDirectory\my table.txt' WITH ( FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n' ) GO 

使用CSV导入很困难,因为导入过程不知道任何字段的最大长度。 因此,当它碰到比初始列长度长的行时,就会出错。

只需将您的csv文件保存为excel工作簿并重新导入即可。 您需要删除上次在创build失败之前创build的现有表。

由于它的优点,创build表格时可以获得正确的字段长度。

从Excel导入到SQL Server 2008时,我遇到了同样的错误。我可以通过从xlsx导出到csv,然后将csv文件导入到Sql Server中来完成。 是的,我不得不手动调整列长,但它工作得很好!

我有同样的问题,不得不手动通过Excel来find问题。 一次节省,如果你点击报告 – >查看报告在底部,它会打开一个新的窗口。 如果您一直滚动到报表底部,它会告诉您有多less行被处理。 这并不意味着问题出现在下一行,但至less可以跳过所有行。

我在Excel中所做的只是取适合SQL的字符数量(即LEFT([Column],255)并截断其余部分。

这不是理想的,但它在我的情况。

出口

您需要将“On Error”选项更改为Ignore,将“On Truncation”选项更改为“忽略数据types映射”。 这将解决问题。

我不确定,如果有人试过这个或者没有:

从当前的excel .xls或其他excel格式复制文件的内容,并将其粘贴到新的excel文件中作为值。 以.xlsx格式保存该文件,然后尝试使用sql server再次导入。

这将是一个成功!