我正在尝试使用OPENROWSET将Excel文件加载到SQL Server中,我想我已经将问题缩小到文件名中的空格。我正在使用以下存储过程,其中动态传入源:
USE [MyDB]
GO
/****** Object: StoredProcedure [dbo].[SP_LOAD_EXCEL] Script Date: 08/07/2014 10:22:37 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--Creates a Store Procedure to take a fully qualified file name and
--load to a temporary database
ALTER PROCEDURE [dbo].[SP_LOAD_EXCEL]
@file nvarchar(max)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Sql Nvarchar(max);
SET @Sql = 'INSERT INTO [MyDB].[dbo].[ExcelData]
SELECT *
FROM OPENROWSET (''Microsoft.Ace.OLEDB.12.0''
,''Excel 12.0; Database='+@file +';Extended Properties=''''EXCEL 12.0;HDR=NO;IMEX=1''
,''SELECT * FROM [Sheet1$]'')';
EXEC(@Sql);
END
我使用以下内容调用SP,这有效:
USE [MyDB]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[SP_LOAD_EXCEL]
@file = N'E:\My_Finalised.xlsx'
SELECT 'Return Value' = @return_value
GO
但是,如果我将文件名替换为E:\ Database backups \ My_Finalised.xlsx,那么它就不起作用。
总结一下:
WORKS :E:\ My_Finalised.xlsx DOESNT 工作:E:\数据库备份\ My_Finalised.xlsx
如何让OPENROWSET接受包含空格的来源?感谢