Você sabia que e possível listar todos os arquivos de determinado diretório via T-SQL no SQL Server?
Vamos ver na prática de como fazer isso.
Primeiramente é preciso que habilite a utilização do ‘xp_cmdshell’, para isso, execute os procedimentos descritos abaixo.
[sourcecode language=”sql”]
EXEC sp_configure ‘show advanced options’, 1
GO
RECONFIGURE
GO
EXEC sp_configure ‘xp_cmdshell’, 1
GO
RECONFIGURE
GO
[/sourcecode]
O ‘xp_cmdshell’ foi habilitado, agora vamos entender os parâmetros de entrada da procedure.
A procedure terá dois parâmetros, são eles: ‘@V_DIR’ e ‘@V_FILES’
@V_DIR | É o diretório que a procedure irá procurar os arquivos. |
@V_FILES | É o arquivo que deseja listar, pode ser um nome completo, um *.*, *.rar ou seja o que precisar. |
Vamos criar a procedure agora, o código é extremamente simples.
[sourcecode language=”sql”]
— =============================================
— Author: Ruberlei Cardoso Bento
— Create date: 13/07/2016
— Description: List files in directory
— =============================================
CREATE PROCEDURE SP_LIST_FILES(@V_DIR VARCHAR(100), @V_FILES VARCHAR(50))
AS
BEGIN
CREATE TABLE #TMP_FILES
(
ID INT IDENTITY(1,1),
FILE_NAME VARCHAR(500)
);
SET @V_DIR = ‘DIR ‘ + @V_DIR + @V_FILES + ‘/B’;
INSERT #TMP_FILES EXEC XP_CMDSHELL @V_DIR;
SELECT ID, FILE_NAME
FROM #TMP_FILES
WHERE FILE_NAME IS NOT NULL;
END;
[/sourcecode]
Depois de criar a procedure e não apresentar nenhum erro, basta executa-lá, para que os arquivos sejam listados.
[sourcecode language=”sql”]
EXEC SP_LIST_FILES ‘D:\RFiles\’, ‘*text*.*’
[/sourcecode]
Abaixo está alguns exemplos de pesquisas que fiz.
Espero que tenham gostado.