[英]How to import excel data from specific rows into EXISTING SQL table?
[英]Import Excel Spreadsheet Data to an EXISTING sql table?
我有一个名为 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$]')
但给了我一个错误:
消息 7308,级别 16,状态 1,第 1 行 OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”不能用于分布式查询,因为该提供程序配置为在单线程单元模式下运行。
一些研究告诉我,它的发生是因为 SQL 服务器的 64 位实例。
问题是必须仅使用 SQL 导入/导出向导才能将 Excel 数据传输到 SQL 表。
如何在不创建新表格的情况下将 Excel 电子表格导入现有 SQL 表格?
我访问过的一些链接无法帮助我解决问题:
您可以通过执行以下操作将数据从 en excel-sheet 复制粘贴到 SQL 表:
注意:通常表有第一列,它是一个 ID 列,带有自动生成/递增的 ID。 当您粘贴数据时,它会开始将 Excel 中最左侧的选定列插入到 SSMS 中最左侧的列中,从而将数据插入到 ID 列中。 为避免在选择的最左侧保留一个空列,以便在 SSMS 中跳过该列。 这将导致 SSMS 插入默认数据,即自动生成的 ID。
此外,您可以通过在 Excel 工作表选择中与要跳过的列相同的顺序位置放置空列来跳过其他列。 这将使 SSMS 插入默认值(或未指定默认值的 NULL)。
Saudate,我遇到了这个寻找不同的问题。 您绝对可以使用 Sql Server 导入向导将数据导入新表。 当然,您不希望将该表留在数据库中,所以我的建议是您导入到一个新表中,然后在查询管理器中编写脚本以插入到现有表中。 您可以添加一行来删除由导入向导创建的临时表,作为脚本成功完成后的最后一步。
我相信您的原始问题实际上与 Sql Server 64 位有关,并且是由于您拥有 32 位 Excel 并且这些驱动程序不能很好地协同工作。 我第一次使用 64 位 excel 时确实遇到了一个非常相似的问题。
如果您想要一个软件工具来执行此操作,您可能需要查看此分步指南:
“如何验证 Excel 电子表格并将其导入 SQL Server 数据库”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.