我在SQLServerManagementStudio中创建了以下临时表:
CREATE TABLE ##LoginMap
(
ObjectId NVARCHAR(50),
UserPrincipleName NVARCHAR(500),
Username NVARCHAR(250),
Email NVARCHAR(500),
Name NVARCHAR(250)
)
这些名称与我试图从中获取数据的excel工作表中的列标题相同。
文件名称为Test Loadsheet
,图纸名为AgilityExport_04Aug2022_164839
。
我正试图将数据插入临时表中,如下所示:
INSERT INTO ##LoginMap
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0; Database=C:tempTest LoadSheet.xlsx', [AgilityExport_04Aug2022_164839]);
GO
然而,我得到了错误:
OLE DB访问接口"Microsoft.ACE.OLEDB.12.0";对于链接服务器";(null(";不包含表";AgilityExport_04Aug2022_164839";。该表不存在,或者当前用户没有访问该表的权限。
我哪里出了问题?我需要做些什么才能成功地将每一列的数据放入我的表中?
您在一个位置的文件名为Test Loadsheet,但在查询中,它的名称为Test Loadsheet.xlsx。试着看看这是否会阻碍它。
如果你感兴趣,找到了一个从excel导入数据到SQL的链接:
https://learn.microsoft.com/en-us/sql/relational-databases/import-export/import-data-from-excel-to-sql?view=sql-server-ver16#打开行集
我采取了不同的方式。在excel表格中,我使用了一个这样的公式:
="INSERT INTO ##LoginMap(ObjectId, DisplayName, AzureEmail, AzureUsername) VALUES('"&A2&"', '"&B2&"', '"&C2&"', '"&D2&"');"
然后我让每一排都重复这个。然后,这给了我一个插入语句,我可以简单地将其复制并粘贴到SSMS中,并允许运行查询