SQL 服务器导入向导不支持从 excel sheet 导入超过 255 列

SQL Server Import Wizard doesn't support importing from excel sheet with more than 255 columns

我使用 SQL Server 2019 导入和导出向导导入 Excel sheet(xlsx 文件)作为源,并将目标设置为 SQL服务器 table。

在向导设置中,我设置了 Excel 中所有列到 SQL 服务器 table 的映射。 在导入向导之后,屏幕上没有显示任何错误,但我发现并非我映射的所有列都填充在 SQL 服务器 table 中。 查看未导入的列,我看到它们位于 excel 文件列的末尾(从左到右),尽管 excel 文件中有值并且正确,但数据库中的所有列都为空值正在向导中映射。

excel 文件有 280 列我在向导中映射并导入

我尝试选择 SQL Server 2016 作为源,但结果是一样的。

作为一种变通方法,我将 excel 文件拆分为两个单独的 excel 文件,方法是一次删除 sheet 中的一半列以减少列数。然后我必须将 2 个导入到两个单独的中间导入步骤 tables 中,然后通过 SQL 查询将它们加入主 table.

我想要一种方法来执行一个支持 280 列 excel 列的导入。我没有尝试过 SSIS,但我认为结果是一样的。

是否有任何设置或解决方法来绕过此限制?

Excel 数据类型

首先,我不确定你说的是否正确:

The nice thing of Excel columns are is that it knows what the datatype when importing so the wizard don't get these weird errors when importing from a csv file for tab delimited file.

因为 Excel 不是数据库引擎,一列可能包含不同的数据类型,这会在读取数据时导致一些问题,尤其是在使用 OLE DB 提供程序(在 SSIS 中使用)时

255 列限制

此外,255 列的限制与 Microsoft Excel 无关,但它与 OLE DB 提供程序(JET 或 ACE)有关,即使与其他来源(Access、平面文件...)一起使用时也是如此

解决方法

  1. 将 Excel 文件转换为 .csv 文件 并使用不依赖于 OLE DB 提供程序的平面文件连接管理器导入它

  2. 分两阶段导入数据 并加入结果 tables:

您可以使用以下 SQL 命令作为来源将前 255 列导入 table:

SELECT * FROM [Sheet1$A:IT]

然后将剩余的列导入另一个 table,然后使用 SQL.

将两个 table 合并到一个目的地 table

您可以参考以下文章获得一些见解: