Exportando consultas com arquivos dinâmicos do SQL Server com SQLCMD

0

Você pode exportar dados do SQL Server usando o comando BCP para o utilitário SQLCMD. No entanto, esses utilitários não oferecem suporte a nomes de arquivos dinâmicos ao exportar dados. Para gerar nomes de arquivos dinâmicos, você pode usar a solução fornecida abaixo. Nos exemplos abaixo eu anexei data / hora para arquivos exportados. Você pode modificar a lógica para atender às suas necessidades.

CREATE PROCEDURE ExportData
AS
SET NOCOUNT ON

SELECT 'Codigo', 'Simples'

GO
EXEC dbo.ExportData

GO

Eu selecionei um string aqui para manter as coisas simples. Você pode especificar qualquer consulta na sua procedure que produza os dados necessários para o seu arquivo.

Agora, vamos escrever o código T-SQL para exportar dados retornados a partir desta stored procedure. Aqui vamos usar SQLCMD (você também pode usar BCP) para exportar dados. Vamos executar SQLCMD usando xp_cmdshell utilizando uma query dinâmica.

DECLARE       @sqlCommand   VARCHAR(1000)
DECLARE       @filePath     VARCHAR(100)
DECLARE       @fileName     VARCHAR(100)

 
SET    @filePath = 'C:\Temp\'

SET    @fileName = 'MyFile_' +
       + CONVERT(VARCHAR, GETDATE(), 112) + '_' +
         CAST(DATEPART(HOUR, GETDATE()) AS VARCHAR) + '_' +
         CAST(DATEPART(MINUTE,GETDATE()) AS VARCHAR) + '.txt'

 

SET    @sqlCommand =
       'SQLCMD -S (local) -E -d NomeBanco -q "EXEC ExportData" -o "' +
       @filePath + @fileName +
       '" -h-1'

 
PRINT       @sqlCommand

EXEC   master..xp_cmdshell @sqlCommand

GO
O código acima criará o arquivo necessário como “MyFile_YYYYMMDD_HH_MM.txt”.
Um grande abraço a todos!
Compartilhe.

Sobre o autor

Criador do blog Código Simples e com mais 9 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist. Atuando em funções analista, desenvolvedor, arquiteto, líder técnico e gestor de equipes. Mais informações em : http://jhonathansoares.com