3

我正在从 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 导入和导出向导)

4

10 回答 10

5

我用同样的错误将头撞在墙上。

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

于 2014-01-05T14:24:01.983 回答
5

原来它只检查 Excel 工作表的前 8 行左右。所以如果它确定长度为 225,然后遇到超过 225 个字符,则会发生错误,我为解决问题所做的就是制作第一行包含最坏的情况(最大的一切)和问题解决了!

于 2018-01-01T23:12:45.320 回答
1

第一个错误是告诉您 Intelligence 列的源数据比目标列长,或者包含目标列不能接受的字符。

第二个错误是告诉您 Intelligence 列比您的目标列长,因此它失败了。我希望这是真正的问题。

你可以

  • 扩大目标列的大小以覆盖更大的输入或
  • 在截断时将组件的错误输出切换为“忽略故障”
于 2012-12-13T13:12:24.310 回答
1

我遇到了同样的问题,虽然我在这里搜索了很多建议,但对我有用的选项是将 excel 文件转换为 aCSV并改用bulk insert命令。

这绕过了编辑对我不起作用的映射的需要。当我更改字段类型时,我有一个未更新的字段。

此答案的以下代码:

BULK INSERT TableName
        FROM 'C:\SomeDirectory\my table.txt'
            WITH
    (
                FIELDTERMINATOR = '\t',
                ROWTERMINATOR = '\n'
    )
GO
于 2013-10-25T15:40:13.403 回答
0

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

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

由于是excel,所以在建表时可以获取正确的字段长度。

于 2014-01-05T13:21:38.250 回答
0

从 Excel 导入到 SQL Server 2008 时,我遇到了同样的错误。我可以通过从 xlsx 导出到 csv,然后将 csv 文件导入到 Sql Server 来做到这一点。是的,我不得不手动调整列的长度,但效果很好!

于 2014-04-15T12:31:58.360 回答
0

我遇到了同样的问题,不得不手动通过 Excel 来查找问题。一次节省,如果您单击底部的报告 -> 查看报告,它将打开一个新窗口。如果您一直滚动到报告的底部,它将告诉您处理了多少行。这并不一定意味着问题出在下一行,但至少您可以跳过之前的所有行。

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

这并不理想,但它在我的情况下有效。

于 2015-02-25T20:28:40.883 回答
0

我不确定,是否有人尝试过:

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

一定会成功的!!

于 2017-03-01T11:34:13.830 回答
0

出口

您需要在 Review Data Type Mapping 中将“On Error”选项更改为 Ignore,将“On Truncation”选项更改为 Ignore。这将解决问题。

于 2015-12-15T09:46:44.553 回答
-1

将最大长度放在第一行就足够了。然后它起作用。

于 2020-05-06T10:42:17.207 回答