Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mfilho

: Converter sentença SQL em arquivo TXT

Recommended Posts

Preciso fazer uma rotina que pegue o resultado de qualquer sentença SQL e transforme em arquivo TXT, com os campos separados por ponto e virgula. Obs: A sentença pode ser Qualquer umaEx: tenho a sentença: Select * from clientesResultado: codigo nome endereco cidade01 XXXXXXXX CCCCC02 ZZZZZZZZ BBBBBBPreciso pegar o resultado desta sentença e transformar em txt:clientes.txt01;XXXXXXXXX;CCCCC02;ZZZZZZZZZ;BBBBBBSe alguem puder me ajudar eu agradeço.Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma alternativa seria fazer um while (ou cursor) e usar a proc estendida (extended stored procedure) XP_CMDSHELL e executar o comando ECHO, veja este exemplo que fiz com while usando o banco pubs, tabela authors.

 

--definindo o banco pubsuse pubs;--definindo variaveisdeclare @arqTexto varchar(8000), 	@au_fname varchar(50), 	@au_lname varchar(50),	@caminho varchar(255),	@au_id varchar(20),	@retEcho INT --variavel para verificar se o arquivo foi escrito--definindo o caminho e arquivo que será escrito --OBS: este caminho deve ser no servidor onde estiver instalado o SQL Serverset @caminho = 'C:\ArqTexto\teste.txt'--setando o menor id para verificação do loopselect @au_id = min(au_id) from authors--while da tabela authorswhile @au_id is not nullbegin	--buscando os campos e jogando eles nas variaveis	select @au_id = au_id, @au_lname = au_lname, @au_fname = au_fname from authors 	where au_id = @au_id	--setando o menor id para verificação do loop	select @au_id = min(au_id) from authors 	where au_id > @au_id	--definindo a linha que será escrita no arquivo txt	SET @arqTexto = 'ECHO Registro;' + @au_id + ';' + @au_lname + ';' + @au_fname +  ' >> ' + @caminho	--escreve no arquivo txt, se ele naum existir será criado, se existir será adicionado (incrementado) a partir da última linha	EXEC @retEcho = MASTER..XP_CMDSHELL @arqTexto, NO_OUTPUT	IF (@retEcho <> 0)	BEGIN		 select 'ocorreu erro, verifique se o diretório existe'		 return	ENDend
dependendo do que você for fazer com este txt, verifique se naum existe a possibilidade de gerar um arquivo xml pois ele te dará mais recursos e flexibilidade.

 

 

falows

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.