- Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 18 anos atrás por
mpvargas.
-
AutorPosts
-
3 de março de 2008 às 11:48 pm #81320
mpvargas
ParticipanteCaros amigos, gostaria de uma ajuda.
Preciso executar uma query todos os dias no AIX, o resultado dessa query deve ser salvo em um arquivo TXT, separado por virgulas ou | (pipe) em um diretório qualquer.
Já consegui alguma evolução, como por exemplo a criação de diversos arquivos, pois são + ou – umas 40 tabelas…
Minhas principais dúvidas são:1 – Como faço para colocar um separador por colunas sem que seja preciso usar o || em cada coluna… não existe nenhum comando que eu possa colocar na query junto com um “select * from table” ao invés de ter que colocar coluna por coluna?
2 – Ao final de cada select é exibido a qtde de linhas selecionadas. Como faço para excluir isso?
Obrigado pela ajuda.
4 de março de 2008 às 12:08 am #81322Marcio68Almeida
Participantevocê pode usar a DBA_TAB_COLUMNS para montar a consulta…
4 de março de 2008 às 12:26 am #81323Ishii
ParticipanteSe você está executando a query no sqlplus
1) Adicione o comando SET na sua query
set colsep ";"
para ter separado por ponto-e-vírgula ou substitua pelo Pipe
2) Adicione o comando feedback
set feedback offExecute a query e veja se o arquivo TXT está correto.
[]s Ishii
4 de março de 2008 às 4:11 pm #81324mpvargas
ParticipanteCaros Amigos,
Muito obrigado pela ajuda. Funcionou perfeitamente.
Se for possível gostaria de mais uma ajuda para poder completar o trabalho.1) Tenho que formatar as colunas tipo NUMBER da seguinte forma (0999999999,99) 10 int + 2 dec, completando com 0 a esquerda. Consegui fazer utilizando a função TO_CHAR(coluna, 0999999999,99), o problema é que essa situação repete-se para muitas colunas. Cada vez que eu fizer isso tenho que relacionar todas as colunas da tabela uma a uma, ou existe algum meio mais fácil.
2) Utilizo o comando SET LINESIZE 5000, mas as linhas do arquivo txt ficam muito grandes, tem algum comando que automaticamente pare no final da linha? Tenho tabelas que tem 300 de tamanho de linha, mas tenho algumas que tem 3.000
Mais uma vez, muito obrigado.
4 de março de 2008 às 4:42 pm #81325Ishii
ParticipanteOlá, acho melhor que você verifique a documentação da Oracle para a utilização do SQL*Plus pois existem uma série de configurações que podem ser úteis para a geração de relatórios:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14357/ch6.htm#sthref1131Para adiantar:
1) Utilize o comando COLUMN FORMAT , porém terá que ser coluna a coluna mesmo…(melhor gerar um script disso com a dba_tab_columns)
SQL> column coluna_numero format 0999999999,992) Acho que na geração de arquivo SPOOL não é necessário a formatação do SET LINESIZE pois isso serviria apenas para o retorno em tela do SQL*Plus pois senão você estará gerando qualquer linha com 5000 caracteres completados com espaços em branco mesmo…
[]s Ishii
4 de março de 2008 às 5:14 pm #81326mpvargas
ParticipanteMAIS UMA VEZ.
MUITO OBRIGADO !!! -
AutorPosts
- Você deve fazer login para responder a este tópico.