Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从excel中选择数据的sql查询_Sql_Sql Server 2005 - Fatal编程技术网

从excel中选择数据的sql查询

从excel中选择数据的sql查询,sql,sql-server-2005,Sql,Sql Server 2005,运行SQL查询从excel中选择数据时,出现以下错误: 味精7302,第16级,状态1,第1行 无法为链接服务器(null)创建OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”的实例 在SQL Server 2005中执行此查询时: SELECT * INTO #TEMP1 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=E:\Students.xls',

运行SQL查询从excel中选择数据时,出现以下错误:

味精7302,第16级,状态1,第1行
无法为链接服务器(null)创建OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”的实例

在SQL Server 2005中执行此查询时:

SELECT * 
INTO #TEMP1 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                'Excel 8.0;Database=E:\Students.xls',
                'SELECT * FROM [Sheet1$]')

您可以使用OPENROWSET和OleDb提供程序针对文本文件发出select,在您的情况下:

SELECT * 
INTO #TEMP1 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                'Excel 8.0;Database=E:\Students.xls',
                'SELECT * FROM [Sheet1$]')
首先,对于xlsx文件(Excel 2007-2010),您可以使用ACE oledb提供程序而不是JET

SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0;HDR=YES;Database=C:\PB.xlsx',
    'SELECT * FROM [Sheet1$]');
如果这不起作用,则必须在服务器上安装jet引擎。在服务器上安装MS Office可以解决这一问题

xls的路径是相对于服务器的,而不是从运行SQL server服务的帐户运行命令的工作站。该帐户必须具有对xls所在文件夹的写入权限。一种可能的解决方案是将服务启动帐户(例如管理员)的temp=和tmp=环境变量更改为(例如)c:\temp,然后对所有人启用对c:\temp的完全控制

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
5....

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 0 
GO 
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 0
GO 


Select * 
into [temp_table$]
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\temp\EXPENDITURE REPORT.xls;HDR=YES;IMEX=1',
'SELECT * FROM [EXPENDITURE SHEET$]')

您可以使用OPENROWSET和OleDb提供程序针对文本文件发出select,在您的情况下:

SELECT * 
INTO #TEMP1 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
                'Excel 8.0;Database=E:\Students.xls',
                'SELECT * FROM [Sheet1$]')
首先,对于xlsx文件(Excel 2007-2010),您可以使用ACE oledb提供程序而不是JET

SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0;HDR=YES;Database=C:\PB.xlsx',
    'SELECT * FROM [Sheet1$]');
如果这不起作用,则必须在服务器上安装jet引擎。在服务器上安装MS Office可以解决这一问题

xls的路径是相对于服务器的,而不是从运行SQL server服务的帐户运行命令的工作站。该帐户必须具有对xls所在文件夹的写入权限。一种可能的解决方案是将服务启动帐户(例如管理员)的temp=和tmp=环境变量更改为(例如)c:\temp,然后对所有人启用对c:\temp的完全控制

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
5....

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 0 
GO 
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 0
GO 


Select * 
into [temp_table$]
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\temp\EXPENDITURE REPORT.xls;HDR=YES;IMEX=1',
'SELECT * FROM [EXPENDITURE SHEET$]')

你的应用程序是64位的吗?没有Microsoft.Jet.OLEDB.4.0的64位提供程序你的应用程序是64位的吗?
Microsoft.Jet.OLEDB.4.0没有64位提供程序