将Excel电子表格数据导入EXISTING sql表?

Sau*_*ate 18 sql sql-server import excel sql-server-2008

我有一个名为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$]')
Run Code Online (Sandbox Code Playgroud)

但是给了我一个错误:

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

一些研究告诉我,它是因为64位SQL服务器实例而发生的.

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

如何在不创建新表的情况下将Excel电子表格导入现有SQL表?

谢谢!

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

小智 27

您可以通过执行以下操作将数据从en excel-sheet复制粘贴到SQL表:

  • 在Excel中选择数据,然后按Ctrl + C.
  • 在SQL Server Management Studio中,右键单击该表,然后选择"编辑前200行"
  • 滚动到底部,然后通过单击行标题选择整个空行
  • 按Ctrl + V粘贴数据

注意:表通常具有第一列,该列是具有自动生成/递增ID的ID列.粘贴数据时,它将开始将Excel中最左侧的选定列插入SSMS中最左侧的列,从而将数据插入ID列.为了避免这种情况,请在选择的最右侧保留一个空列,以便在SSMS中跳过该列.这将导致SSMS插入默认数据,即自动生成的ID.

此外,您可以通过在Excel工作表选择中的相同序号位置使用空列作为要跳过的列来跳过其他列.这将使SSMS插入默认值(或NULL,其中未指定默认值).

  • 请注意,如果出现错误(例如,如果您在复制的数据中没有留下空列并尝试将其输入到具有 ID 列的表中),则必须在错误上单击“确定”消息的次数与复制数据中的行数相同。没有办法取消。 (2认同)

Ron*_*Ron 9

Saudate,我跑过去寻找另一个问题.您绝对可以使用Sql Server Import向导将数据导入新表.当然,您不希望将该表保留在数据库中,因此我建议您导入到新表中,然后在查询管理器中编写脚本以插入到现有表中.您可以添加一行来删除导入向导创建的临时表,作为成功完成脚本的最后一步.

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


Ham*_*eza 6

您可以使用向导导入数据,然后您可以选择目标表.

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

单击目标部分下的字段以打开下拉列表并选择目标表并根据需要编辑其映射.