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.


EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO

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.

-- =============================================
-- 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;

Depois de criar a procedure e não apresentar nenhum erro, basta executa-lá, para que os arquivos sejam listados.


EXEC SP_LIST_FILES 'D:\RFiles\', '*text*.*'

Abaixo está alguns exemplos de pesquisas que fiz.

example 1 Example 2 Example 3

Espero que tenham gostado.


0 comentário

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *