openrowset - 如何从带有空格的文件名中进行选择?

时间:2016-01-09 17:05:21

标签: sql sql-server openrowset

这是有效的:

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')

我试过双打引号(“...”)和[...]

提前感谢您的提示

1 个答案:

答案 0 :(得分:2)

query专门针对DefaultDir(强调我的):

  

'query'

     

是否向提供程序发送并执行字符串常量。 SQL Server的本地实例不处理此查询,但处理提供程序返回的查询结果,即传递查询。 [...]

换句话说,这不是由于SQL Server导致此传递查询无效。

以下两个示例使用提供程序字符串中的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"');

或者

{{1}}