Pular para o conteúdo
  • Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 18 anos atrás por mpvargas.
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #81320
    mpvargas
    Participante

      Caros 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.

      #81322
      Marcio68Almeida
      Participante

        você pode usar a DBA_TAB_COLUMNS para montar a consulta…

        #81323
        Ishii
        Participante

          Se 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 off

          Execute a query e veja se o arquivo TXT está correto.

          []s Ishii

          #81324
          mpvargas
          Participante

            Caros 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.

            #81325
            Ishii
            Participante

              Olá, 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#sthref1131

              Para 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,99

              2) 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

              #81326
              mpvargas
              Participante

                MAIS UMA VEZ.
                MUITO OBRIGADO !!!

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.