Configurando SPOOL ORACLE
Galera.. Preciso de uma ajuda, acredito que talvez seja simples, mas infelizmente nao achei na internet.. Enfim..
Estou gerando um comando spool para criar um arquivo txt.. Entao esta desta maneira:
O arquivo gera normal, porem apresenta o select executado no arquivo, como abaixo.
Alguem tem uma lista no qual eu vejo os tipos de set's q posso dar para tirar essas linhas de comando???
Obrigado!!!!
Estou gerando um comando spool para criar um arquivo txt.. Entao esta desta maneira:
set echo off set feedback off set heading off spool 'C:\\TESTE\\TXT\\testespool.txt' SELECT DISTINCT DWCDCLIE FROM DWATOOA WHERE DWFLATTI = 0; spool off
O arquivo gera normal, porem apresenta o select executado no arquivo, como abaixo.
SQL> SELECT DISTINCT DWCDCLIE FROM DWATOOA WHERE DWFLATTI = 0;
563163
563166
567968
567984
563094
567974
563161
563164
567971
567989
567991
567973
567969
567979
567970
561783
563165
567972
SQL> spool off
Alguem tem uma lista no qual eu vejo os tipos de set's q posso dar para tirar essas linhas de comando???
Obrigado!!!!
Felipe
Curtidas 0
Melhor post
Roberto Spernega
01/06/2017
Felipe,
Salva este scripit no arquivo x.sql (ou qualquer nome) e depois executa
Só pra testar, depois troca a query pela sua.
accept v_arquivo prompt "Informe o nome do arquivo com extensão: "
accept v_separador prompt "Informe o separador: "
set feedback off
set heading off
set termout off
Set echo off
set verify off
Set Pagesize 0
Set linesize 1000
Set Trimspool on
spool &v_arquivo
with x as(
select 1 col1, 2 col2, 3 col3, 4 col4 from dual
union
select 5 col1, 6 col2, 7 col3, 8 col4 from dual
union
select 9 col1, 10 col2, 11 col3, 12 col4 from dual)
Select col1||'&v_separador'||col2||'&v_separador'||col3||'&v_separador'||col4
from x;
spool off
Salva este scripit no arquivo x.sql (ou qualquer nome) e depois executa
Só pra testar, depois troca a query pela sua.
accept v_arquivo prompt "Informe o nome do arquivo com extensão: "
accept v_separador prompt "Informe o separador: "
set feedback off
set heading off
set termout off
Set echo off
set verify off
Set Pagesize 0
Set linesize 1000
Set Trimspool on
spool &v_arquivo
with x as(
select 1 col1, 2 col2, 3 col3, 4 col4 from dual
union
select 5 col1, 6 col2, 7 col3, 8 col4 from dual
union
select 9 col1, 10 col2, 11 col3, 12 col4 from dual)
Select col1||'&v_separador'||col2||'&v_separador'||col3||'&v_separador'||col4
from x;
spool off
GOSTEI 1
Mais Respostas
Roberto Spernega
01/06/2017
Cria um arquivo com o conteúdo da sua query
set echo off
set feedback off
set heading off
spool 'C:\\\\TESTE\\\\TXT\\\\testespool.txt'
SELECT DISTINCT DWCDCLIE FROM DWATOOA WHERE DWFLATTI = 0;
spool off
salva como, por exemplo, c:\\teste\\x.sql
Daí no SqlPlus você executa @c:\\teste\\x.sql
set echo off
set feedback off
set heading off
spool 'C:\\\\TESTE\\\\TXT\\\\testespool.txt'
SELECT DISTINCT DWCDCLIE FROM DWATOOA WHERE DWFLATTI = 0;
spool off
salva como, por exemplo, c:\\teste\\x.sql
Daí no SqlPlus você executa @c:\\teste\\x.sql
GOSTEI 0
Felipe
01/06/2017
Obrigado a ajuda.. A ideia realmente funciona, porem ele passa a ignorar os sets que eu dei anteriormente. Na verdade, eu acho que essa ideia, por mais que funcione, não vai me ajudar pois a ideia é criar uma procedure de acordo com oque um cliente solicitou.. Porem não estou conseguindo tirar aquelas linhas de comando do arquivo.
GOSTEI 0
Roberto Spernega
01/06/2017
Você não conseguiu nada ainda com o UTL_FILE?
GOSTEI 0
Felipe
01/06/2017
Não =(
Com o UTL_FILE eu consegui criar a Procedure e aparentemente esta tudo correto, porem quando eu executo a procedure, aparece "Operação inválida no arquivo." .. Eu procurei na internet sobre o assunto, mas todas as formas que tentei olhando os foruns, não deu certo.
Por isso estou tentando pelo Spool.
No Spool estou conseguindo gerar o arquivo, ao menos, porem não estou conseguindo formata-lo de uma maneira melhor.
Com o UTL_FILE eu consegui criar a Procedure e aparentemente esta tudo correto, porem quando eu executo a procedure, aparece "Operação inválida no arquivo." .. Eu procurei na internet sobre o assunto, mas todas as formas que tentei olhando os foruns, não deu certo.
Por isso estou tentando pelo Spool.
No Spool estou conseguindo gerar o arquivo, ao menos, porem não estou conseguindo formata-lo de uma maneira melhor.
GOSTEI 0
Roberto Spernega
01/06/2017
Quer tentar passar exatamente como você quer a saída do Arquivo?
Dai eu tento ver se consigo.
Dai eu tento ver se consigo.
GOSTEI 0
Felipe
01/06/2017
Preciso criar uma procedure no qual ira gerar um txt a partir de 2 variáveis, sendo var1 para endereço de onde sera salvo (ate por esse motivo eu achei melhor o spool, pois no utl_file eu teria que ficar criando ou alterando o diretorio), var2 seria o separador entre campos..
Entao seria algo tipo..
Entao seria algo tipo..
var1 varchar2(200) := 'C:\\Teste'; var2 varchar2(1) := ';'; set feedback off set heading off spool var1 select campo1||var2||campo2||var2||campo3 from tabela spool off
GOSTEI 0
Felipe
01/06/2017
No arquivo txt.. eu so preciso do resultado da query.. nao preciso de titulo nem nada.. apenas os resultados
GOSTEI 0
Felipe
01/06/2017
Perfeito!!! Ficou certinho =)
O único jeito de não aparecer a query seria chamando o arquivo como .sql? Não tem nenhum jeito de deixar uma procedure pronta com a query para executar?
O único jeito de não aparecer a query seria chamando o arquivo como .sql? Não tem nenhum jeito de deixar uma procedure pronta com a query para executar?
GOSTEI 0
Roberto Spernega
01/06/2017
Felipe,
Pra colocar tudo numa procedure precisaria do UTL_FILE e o UTL_FILE não gera num disco local, só num diretório definido no banco.
Fiz uns testes aqui e não consegui fazer via procedure sem ter um script pra definir as variáveis e os SETs e chamar a execução dela.
Pra colocar tudo numa procedure precisaria do UTL_FILE e o UTL_FILE não gera num disco local, só num diretório definido no banco.
Fiz uns testes aqui e não consegui fazer via procedure sem ter um script pra definir as variáveis e os SETs e chamar a execução dela.
GOSTEI 0
Roberto Spernega
01/06/2017
Não sei como será o processo de execução da geração desse, mas você poderia criar uma BAT e um ícone para o usuário executar.
call C:\\oracle\\product\\10.2.0\\client_1\\bin\\sqlplusw.exe usuario/senha @c:\\temp\\sp_gera_Arquivo.sql
o problema é que teria que ter o usuário e senha nesta BAT.
call C:\\oracle\\product\\10.2.0\\client_1\\bin\\sqlplusw.exe usuario/senha @c:\\temp\\sp_gera_Arquivo.sql
o problema é que teria que ter o usuário e senha nesta BAT.
GOSTEI 0