电子表格已满

8

我正在使用SSIS将数据插入Excel。

我遇到了以下异常:

'[Excel Destination [32]] Error: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available.  Source: "Microsoft Office Access Database Engine"  Hresult: 0x80004005  Description: "Spreadsheet is full.".'

我使用以下链接进行了一些研究:

http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP010073849.aspx

它说明您最多可以填充 1,048,576 行乘以 16,384 列
我要导入 Excel 的数据只有约 100,000 行乘以 5 列
为什么会出现此异常?
FYI,以下是我的Data Flow TaskODBC SourceData Conversion 转换到 Excel Destination

我在 SSIS 中使用了一个 ODBC Source 转换到 Data Conversion,最终输出到 Excel Destination 的流程...没有插入代码。 - J.S. Orris
4个回答

9

最好的解决方法是使用“平面文件目标”(Flat File Destination),然后直接从Excel导入“平面文件”(Flat File)。这种方法比使用SSIS导入Excel要快得多,而且非常慢。这种解决方法几乎可以即时导入我的数据,而不必等待半个小时。


3

我通过将文件更改为xlsx格式,并将Excel版本(属性Excel连接管理器)更改为Excel 2007-2010进行了排序。


1
我通过创建一个空的 EXCEL 文件来解决这个问题,该文件包含应在转换期间填写的所有列,并在 Excel 文件中创建了一个表格。因此,您可以通过选择这些列并单击可用于您的“格式为表格”选项来执行此操作。一旦 Excel 文件准备好,您可以将其保存为 xlsx 扩展名,然后尝试再次加载该 Excel 文件。现在,您将能够加载具有更高行数的 Excel 文件。

1
我的解决方案:
  • 这里安装了Microsoft Access Database Engine 2016 Redistributable

  • 从Windows启动中打开了SQL Server 2019 Import and Export Data (64-bit)

  • 选择了Microsoft OLE DB Provider for SQL Server作为数据源

  • 选择了Microsoft Excel作为目标

  • 选择了一个带有.xlsx扩展名的Excel文件路径(文件事先未创建)。

而且速度非常快。就是这样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接