Compactar Arquivos via SQL Server
Todos nós sabemos que esse não é o papel do banco de dados, mas se um dia precisar por algum motivo, saiba que, sim é possível compactar um arquivo via ‘T-SQL’ no SQL Server.
Vamos ver na pratica como isso funciona.
No exemplo de compactação utilizou-se o 7-zip, então, caso não tenha instalado, instale, pois o mesmo será utilizado.
Depois de realizar o download e instalar com sucesso, é necessário que copie o arquivo ‘7z.exe’ para a pasta ‘system32’ da máquina em que o SQL Server está instalado.
Agora precisamos que seja habilitado o uso do ‘xp_cmdshell’, caso ele não esteja habilitado, para isso, execute os comandos descritos abaixo:
EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure 'xp_cmdshell', 1 GO RECONFIGURE GO
Habilitado o ‘xp_cmdshell’, vamos criar a procedure que será a responsável por realizar a compactação de determinado arquivo.
Antes de criar a procedure, vamos entender quais são seus parâmetros.
A procedure é composta por três parâmetros, são eles: ‘@V_FILE’, ‘@V_DIR’ e ‘@V_NAME_FILE_COMPACT’.
@V_FILE | É o nome do arquivo que deseja compactar. |
@V_DIR | É onde está o arquivo que deseja compactar. |
@V_NAME_FILE_COMPACT | É o nome do arquivo compactado. |
-- ============================================= -- Author: Ruberlei Cardoso Bento -- Create date: 23/07/2016 -- Description: Compact Files -- ============================================= CREATE PROCEDURE SP_COMPACT_FILES(@V_FILE VARCHAR(100), @V_DIR VARCHAR(100), @V_NAME_FILE_COMPACT VARCHAR(100)) AS DECLARE @V_COMMAND_LINE VARCHAR(1000); BEGIN DECLARE @V_RETURN INT = 0; SET @V_COMMAND_LINE = '7z a -tzip "' + @V_DIR + @V_NAME_FILE_COMPACT + '" "' + @V_DIR + @V_FILE + '" ' ; PRINT @V_COMMAND_LINE CREATE TABLE #T_RESULT ( ID INT IDENTITY(1,1), DESCRI VARCHAR(1000) ); INSERT INTO #T_RESULT EXEC @V_RETURN = master..xp_cmdshell @V_COMMAND_LINE; IF @V_RETURN <> 0 BEGIN SELECT * FROM #T_RESULT WHERE DESCRI IS NOT NULL; END ELSE BEGIN SELECT 'SUCESS FILE ' + @V_DIR + @V_NAME_FILE_COMPACT AS SUCESS END; END;
Agora vamos executar a procedure para que possamos ver o resultado.
No exemplo, criei uma pasta no ‘C:\’ chamada ‘Files’, dentro dela criei um arquivo chamado ‘teste1.txt’.
EXEC SP_COMPACT_FILES 'teste1.txt', 'C:\Files\', 'COMPACTADO.ZIP'
Vejam o resultado na imagem abaixo.
Espero que gostem e façam bom uso.
Nenhum comentário