导入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数据库”