openrowset - 如何 select 来自带有空格的文件名?

openrowset - How to select from a filename with white spaces?

这是有效的:

SELECT * 
FROM OPENROWSET('MSDASQL','Driver={Microsoft Access Text Driver (*.txt, *.csv)}; Extended Properties="text; HDR=YES; FMT=Delimited"','SELECT * FROM E:\folder\subfolder\myfile.txt')

由于空格,这不起作用:

SELECT * 
FROM OPENROWSET('MSDASQL','Driver={Microsoft Access Text Driver (*.txt, *.csv)}; Extended Properties="text; HDR=YES; FMT=Delimited"','SELECT * FROM E:\folder\sub folder\my file.txt')

我尝试使用双引号 ("...") 和 [...]

提前感谢您的提示

来自documentation on OPENROWSET 专门关于query(强调我的):

'query'

Is a string constant sent to and executed by the provider. The local instance of SQL Server does not process this query, but processes query results returned by the provider, a pass-through query. [...]

换句话说,这 pass-through 查询不工作不是由于 SQL 服务器。

以下两个示例在您的提供程序字符串中使用了 DefaultDir 属性 并且应该使您的语句起作用:

SELECT * FROM OPENROWSET('MSDASQL','Driver={Microsoft Access Text Driver (*.txt, *.csv)}; Extended Properties="text; HDR=YES; FMT=Delimited"; DefaultDir=E:\folder\sub folder;','SELECT * FROM [my file#txt]');

SELECT * FROM OPENROWSET('MSDASQL','Driver={Microsoft Access Text Driver (*.txt, *.csv)}; Extended Properties="text; HDR=YES; FMT=Delimited"; DefaultDir=E:\folder\sub folder;','SELECT * FROM "my file.txt"');