【发布时间】:2026-01-27 03:00:01
【问题描述】:
我使用 SQL Server 2019 导入和导出向导将 Excel 工作表(xlsx 文件)作为源导入,并将目标设置为 SQL Server 表。
在向导设置中,我设置了 Excel 中所有列到 SQL Server 表的映射。 导入向导后,屏幕上没有显示任何错误,但我发现并非所有已映射的列都填充在 SQL Server 表中。 查看未导入的列,我发现它们位于 excel 文件列的末尾(从左到右),尽管在 excel 文件中有值并在向导中正确映射,但它们在 db 中都有空值。
excel文件有280列我在向导中映射并导入
我尝试选择 SQL Server 2016 作为源,但结果相同。
作为一种解决方法,我通过一次从工作表中删除一半的列来减少列数,将 excel 文件拆分为两个单独的 excel 文件。然后我必须在两个单独的中间导入步骤表中执行 2 次导入,然后通过 SQL 查询将它们加入到主表中。
我想要一种支持 280 列 excel 列的导入方法。我没有尝试过 SSIS,但我认为结果是一样的。
是否有任何设置或解决方法可以绕过此限制?
【问题讨论】:
-
使用向导时有 255 列的限制。您可以将 Excel 文件转换为 .txt,然后将其作为平面文件导入。看看 thomassantosh 对这个问题的回答:*.com/questions/35068803/…
-
是的,这就是问题所在。 Excel 列的好处是它知道导入时的数据类型,因此从 csv 文件导入制表符分隔文件时,向导不会出现这些奇怪的错误。转换为 txt 文件是一个额外的步骤,它有自己的过程,我宁愿保持一步。
-
最佳做法是将 Excel 转换为 csv,如 digital.aaron 所述
-
@choba78 。你最终会讨厌 Excel 猜测数据类型。
标签: sql-server excel ssis etl sql-server-2019