如何使用SQL Server查询仅加载指定文件夹内的.txt后缀文本文件
仅加载.txt格式文件的调整方案
有两种可行调整方式,按需选择即可:
方案1:修改系统dir命令(更高效,直接过滤后返回结果)
在dir命令后追加\*.txt后缀过滤规则,直接让系统仅返回目标路径下的txt文件,完整代码如下:
DECLARE @command VARCHAR(1000); DECLARE @fileDir VARCHAR(1000); DECLARE @files TABLE ([Id] INT IDENTITY, [FileName] VARCHAR(1000)); SET @fileDir = 'D:\NewDataFolder'; -- 追加*.txt后缀过滤,仅返回txt文件 SET @command = 'dir /b ' + @fileDir + '\*.txt'; INSERT INTO @files EXECUTE xp_cmdshell @command; SELECT * FROM @files WHERE [FileName] IS NOT NULL AND [FileName] <>'File Not Found'
方案2:在SQL查询结果中过滤(适合需要先获取全量文件列表做其他处理的场景)
不需要修改dir命令,仅在最终查询的WHERE条件中追加后缀判断即可,判断规则可以用LIKE匹配或者RIGHT函数截取后缀:
DECLARE @command VARCHAR(1000); DECLARE @fileDir VARCHAR(1000); DECLARE @files TABLE ([Id] INT IDENTITY, [FileName] VARCHAR(1000)); SET @fileDir = 'D:\NewDataFolder'; SET @command = 'dir /b ' + @fileDir; INSERT INTO @files EXECUTE xp_cmdshell @command; SELECT * FROM @files WHERE [FileName] IS NOT NULL AND [FileName] <>'File Not Found' -- 追加txt后缀过滤,SQL Server默认不区分大小写,大小写后缀都能匹配 AND [FileName] LIKE '%.txt'
如果需要更严谨的后缀匹配,避免文件名中间包含.txt的误判,可以改用RIGHT([FileName], 4) = '.txt'替代LIKE规则。
内容的提问来源于stack exchange,提问作者Raju Ahmed
相关产品推荐
相关产品推荐

