sql - 将 Excel 电子表格数据导入现有的 SQL 表?

标签 sql sql-server excel sql-server-2008 import

我有一个名为 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/

相关文章:

SQL - 仅按最大日期选择唯一名称?

不使用游标为每行调用 SQL 存储过程

excel - Mac Excel 2016 VBA - Workbook.open 出现 1004 错误

vba - 如何在 Excel VBA 中获取包括工作表名称但不包括工作簿名称的范围地址?

Java, JDBC : Does closing a PreparedStatement also free up its memory footprint in the database connection?

sql - PostgreSQL:如何使用包含时间戳的字符列

sql - 从 postgres (9.4.7) 中的 json 元数据中删除属性

SQL:为具有多个结果的记录创建新列?

sql-server - 当您忘记关闭和释放游标时会发生什么?

vba - 如何格式化VBA Excel中文本框中的每一行