Openrowset与源中的空格

时间:2014-08-07 09:28:16

标签: database excel sql-server-2008 openrowset

我正在尝试使用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接受包含空格的来源?感谢

0 个答案:

没有答案