我有一个excel文件,由另一个有多个excel表的程序生成。 列结构是相同的,只是第一个工作表有标题,其余的只是从最后一个工作表结束的地方继续 - 它是一个xls格式,每个工作表只允许65.563行。
我想在SQL Server Management Studio的一个表中导入它们。
我对SSMS不熟悉,所以我不确切知道从哪里开始。
你能帮忙吗?
由于
答案 0 :(得分:1)
我想我有一些教程。它可以帮助您快速将记录从Excel插入数据库。
这是示例代码:
INSERT INTO Employee
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0 Xml; HDR=YES; IMEX=1;
Database=C:\DataFiles\EmployeeData1.xlsx',
[vEmployee$]);
有关详细信息,请访问此链接:tutorial link
或者你也可以这样做:Tutorial for excel to database
答案 1 :(得分:0)
您可以做一些事情。
以下是从Excel 2003迁移数据的脚本:
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0'
,'Excel 4.0;Database=D:\test.xls','SELECT * FROM [sheet1$]')
但是,当Excel 2007及更高版本使用相同的代码时,会出现以下错误:
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0'
,'Excel 4.0;Database=D:\test.xlsx','SELECT * FROM [sheet1$]')
消息7399,第16级,状态1,第1行 链接服务器“(null)”的OLE DB提供程序“ Microsoft.Jet.OLEDB.4.0”报告了一个错误。提供程序未提供有关该错误的任何信息。 Msg 7303,第16级,状态1,第1行 无法为链接服务器“(null)”初始化OLE DB访问接口提供程序“ Microsoft.Jet.OLEDB.4.0”的数据源对象。
让我们逐步解决这个问题。
第1步: 下载Microsoft Access数据库引擎2010
第2步: 在计算机上安装Microsoft Access Database Engine 2010。
第3步: 打开SQL Server Management Studio。 (如果已经打开,请关闭然后重新打开)
第4步: 启用临时查询。
sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
第5步: 关闭您需要导入的Excel工作表(如果已打开)。
第6步: 在下面给出的脚本中使用$符号给出正确的路径,文件名和excel工作表名称,然后执行查询。 此信息必须正确。
SELECT * FROM OPENROWSET ('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=E:\test.xlsx;HDR=YES;IMEX=1',
'SELECT * FROM [sheet1$]');
如果第一行具有列名,则为“HDR=YES“
,否则应为否。
在临时表中需要此查询结果的情况下,以下是将Excel记录插入到临时表中的脚本。
SELECT * into Temp FROM OPENROWSET ('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=E:\test.xlsx;HDR=YES;IMEX=1',
'SELECT * FROM [sheet1$]');
或者,类似地...
---- Has column names
SELECT * FROM OPENROWSET ('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=E:\test.xlsx;HDR=YES;IMEX=1', 'SELECT * FROM [sheet1$]');
---- Does not have column names
SELECT * FROM OPENROWSET ('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=E:\test.xlsx;HDR=NO;IMEX=1', 'SELECT * FROM [sheet2$]');
---- Does not have column names
SELECT * FROM OPENROWSET ('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=E:\test.xlsx;HDR=NO;IMEX=1', 'SELECT * FROM [sheet3$]');