读取大 Excel 文件时收到"not enough storage"错误



当我将数据从excel导入SQL时,我收到以下错误。 内存最大。 Excel 的格式为.xlsx。Excel 的大小为 170 MB(178,587,611 字节(。但我得到了:

存储错误不足。

如果有人帮助我,我将不胜感激。

数据流执行失败。没有足够的存储空间可供处理 此命令。(HRESULT的例外:0x80070008( (Microsoft.SqlServer.DTSRuntimeWrap(

该错误来自 SSIS 运行时,而不是 SQL Server。

SQL Server 中的空间不足会产生

Msg 9002, Level 17, State 4, Line 20
The transaction log for database 'XXX' is full due to 'ACTIVE_TRANSACTION'.

Msg 1105, Level 17, State 2, Line 20
Could not allocate space for object 'YYY' in database 'XXX' because the 'PRIMARY' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.

它与存储无关,通常表示内存问题。 我将首先尝试减小数据流中的缓冲区大小,并确保数据流没有任何需要将大量数据加载到内存中的组件,例如查找。

请参阅数据流性能功能

此错误主要发生在使用 OLE DB 适配器(OLE DB 连接管理器或 EXCEL 连接管理器(处理大型 Excel 文件时,因为此适配器有许多限制。我建议分块阅读 excel 文件。在类似的情况下,我主要使用 C# 脚本来执行此操作,或者您可以通过实现 for 循环容器来循环 excel 中使用的范围。

另一个建议是使用 64 位版本的 Microsoft Excel。这可能会增加要操作的数据量。

有关其他信息,您可以参考以下答案:

  • 如何在SSIS中将一个大的excel文件拆分为多个小文件?
  • 内存不足异常,同时尝试将大 Excel 文件读入数据表