从 Excel 将数据导入 SQL 服务器 table

Import data to SQL Server table from Excel

我正在尝试将数据从 excel 文件导入到 SQL 服务器 table。我收到此错误 "External table is not in the expected format (Microsoft Office Access Database Engine)" 我正在使用 Microsoft SQL Server 2012 和 Excel 2007。我尝试了 Microsoft SQL Server 导入和导出向导。然后我选择 Microsoft Excel 作为数据源,选择文件名并选择 excel 的版本。然后我收到了上面的错误信息。

发现与excel文件有关。在打开 excel 文件之前,我收到此错误消息 "The file you are trying to open .xls is in a different format than specified by the file extension. Verify that file is not corrupted and is from a trusted source before opening the file. " 打开它并复制其内容并从中创建一个新的 excel 文件。然后我使用这个文件在向导中导入。我将 Microsoft Excel 指定为文件名的来源,将 Microsoft excel 2007 指定为版本。 对于目标,我选择了 SQL Server Native client 11.0、服务器名称和数据库。我选择编辑映射来映射 excel sheet 和目标 table 之间的字段。 运行 向导将数据传输到 sql 服务器中的目标 table。

检查以确保 Excel 工作簿上没有密码(如果有,请将其删除)。我遇到了同样的错误,这解决了它。

我遇到了一个 xsls 文件 (Excel 2007) 的问题。向导正确识别了版本,但因 "not in expected format" 错误而失败。

我不确定错误的来源是什么 - 我怀疑传播sheet 中的链接或引用无效。

我复制了自己感兴趣的sheet内容,粘贴到新的空白作品sheet中。我保存了它,然后在导入向导中打开它,导入它没有问题。

我发现问题是 Excel Sheet 是 .xls 格式,我使用的是 Excel 2010 和 SQL Server 2014,所以解决方案只是将 spreadsheet 转换为 .xlsx,然后通过选择 Excel 作为数据源再次 运行 向导,自动选择 Exel 2007 作为 Excel 版本数据源和向导 运行 顺利解决了问题。

因此不需要将 sheet 的内容复制到新的传播sheet。

希望对大家有所帮助!

在我的例子中,我在一次从 3 sheet 中导入数据时遇到了这个错误。然后我只选择一个 sheet 并且它起作用了。接下来我选择其他两个 sheets,它们也有效,所以有时您可能只想单独导入 sheets 或再给它一次机会。它可能会对某人有所帮助。

我的问题是我的 excel table 没有定义命名范围。在我的 excel 文件中创建命名范围后,我就可以导入它了。

您应该将 Excel 文件保存为较低版本,可以是 excel 的 2003 版本。保存文件后,您现在可以进行 SQL.

的数据传输

基因

使用与最新 xlsx 版本不同的名称保存它。没关系,如果你认为你什么也没改变,它确实改变了。然后尝试导入新文件。

我今天 运行 遇到了这个问题,我确定这是由于第一个 sheet 开头的图形引起的。由于我只关心第 3 个 sheet,我删除了前两个 sheet,然后错误消失了。

这个问题的另一个答案可能是(对我来说)它只有在我有相同的 Excel 文件时才有效,我正在导入到数据库中,打开。 原因是我公司的加密政策,使用一种叫做 NASCA 的软件。 当我关闭文件时,它会被加密并且无法读取,例如SQL 服务器管理工​​作室。

因此,请尝试在导入过程中保持文件打开,它可能会起作用。