我有一个名为 tblAccounts 的表,其内容来自 Excel 电子表格。
我在 Windows 8.1 (x64) 上使用 MS SQL Server 2008 (x64)
我尝试使用 SQL Server 导入/导出向导,但没有选择现有表的选项,只有创建新表的选项。
我尝试使用其他方法,例如 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 Server 实例而发生的。
问题是 Excel 数据到 SQL 表的传输必须仅使用 SQL 导入/导出向导来完成。
如何将 Excel 电子表格导入现有 SQL 表而不创建新表?
我访问过一些链接,但无法帮助我解决问题:
最佳答案
您可以通过以下方式将数据从 Excel 工作表复制粘贴到 SQL 表:
- 选择 Excel 中的数据并按 Ctrl + C
- 在 SQL Server Management Studio 中右键单击表并选择“编辑前 200 行”
- 滚动到底部并通过单击行标题选择整个空行
- 按 Ctrl + V 粘贴数据
注意:表通常有第一列,它是具有自动生成/递增 ID 的 ID 列。当您粘贴数据时,它将开始将 Excel 中最左边的选定列插入到 SSMS 中最左边的列,从而将数据插入到 ID 列中。为了避免这种情况,请在选择的最左侧保留一个空列,以便在 SSMS 中跳过该列。这将导致 SSMS 插入默认数据,即自动生成的 ID。
此外,您可以通过在 Excel 工作表选择中将空列置于与要跳过的列相同的序号位置来跳过其他列。这将使 SSMS 插入默认值(或 NULL,如果未指定默认值)。
关于sql - 将 Excel 电子表格数据导入现有的 SQL 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20085249/