导入Excel电子表格数据到一个EXISTING SQL表?

我有一个名为tblAccounts的表,其内容将来自Excel电子表格。

我在Windows 8.1(x64)上使用MS SQL Server 2008(x64)

我尝试使用SQL Server导入/导出向导,但没有selectselect现有的表,但只有一个选项来创build一个新的。

我尝试使用其他方法,如OPENROWSETS

INSERT INTO tblAccount SELECT * FROM OPENROWSET( 'Microsoft.Jet.OLEDB.4.0', 'Excel 12.0;Database=D:\exceloutp.xls','SELECT * FROM [Sheet1$]') 

但给了我一个错误:

 Msg 7308, Level 16, State 1, Line 1 OLE DB provider 'Microsoft.Jet.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode. 

有研究告诉我,这是因为一个64位的SQL服务器实例。

问题是,这个excel数据传输到一个SQL表必须使用SQL导入/导出向导来完成。

如何将Excel电子表格导入到现有的SQL表格而不创build新的表格?

谢谢!

我访问过的一些链接,但无法帮助我解决我的问题:
如何将Excel电子表格导入SQL Server?
修复OLE DB错误

Saudate,我跑过去寻找一个不同的问题。 您绝对可以使用Sql Server导入向导将数据导入新表。 当然,你不希望在数据库中留下这个表,所以我的build议是,你导入到一个新的表,然后脚本在查询pipe理器中的数据插入到现有的表。 您可以添加一行以删除导入向导创build的临时表,作为脚本成功完成的最后一步。

我相信你原来的问题实际上是与Sql Server 64位有关,是由于你有一个32位的Excel,这些驱动程序不能很好地一起玩。 第一次使用64位excel时,我遇到了一个非常类似的问题。

您可以通过这样做将数据从excel表格复制粘贴到SQL表格中:

  • 在Excel中select数据并按下Ctrl + C
  • 在SQL Server Management Studio中,右键单击该表,然后select“编辑排名前200的行”
  • 滚动到底部并通过单击行标题来select整个空行
  • 按Ctrl + V粘贴数据

注意:通常,表格的第一列是带有自动生成/增加的ID的ID列。 当您粘贴数据时,它将开始将Excel中最左侧的选定列插入到SSMS中最左侧的列中,从而将数据插入到ID列中。 为了避免在select的最右侧保留一个空列,以便跳过SSMS中的列。 这将导致SSMS插入默认数据,即自动生成的ID。

此外,您可以跳过其他列,方法是在Excel工作表select中将相同序数位置处的空列与要跳过的列进行比较。 这将使SSMS插入默认值(或NULL,如果没有指定默认值)。

您可以使用向导导入数据,然后您可以select目标表。

运行向导。 在select源表格和视图窗口时,您会看到两个部分。 来源和目的地。

单击目的地部分下的字段打开下拉菜单并select目的地表格并根据需要编辑其映射。

如果你想要一个软件工具来做到这一点,你可能想看看这个分步指南:

“如何validation和导入Excel电子表格到SQL Server数据库”

http://leansoftware.net/forum/en-us/help/excel-database-tasks/worked-examples/how-to-import-excel-spreadsheet-to-sql-server-data.aspx