4 Replies Latest reply: Dec 4, 2017 8:28 AM by Mario Rodrigues RSS

    Nova coluna que não esta nos anteriores

    Mario Rodrigues

      Pessoal

       

      Acho que alguem deve ter passado por isso.

       

      Tenho um QVD com varios meses .. porem precisei add uma nova coluna no extract, dai da erro ao gerar pois informa que a coluna não existe, claro criei ontem (CHAVE do load incremental)

       

      Hoje ao tentar gerar o extract valendo da esse erro, tem alguma forma de eu incluir no QVD essa coluna???

        • Re: Nova coluna que não esta nos anteriores
          Alessandro Furtado

          Mario,

           

          Se a nova coluna para os arquivos antigos não for necessário preencher, basta fazer um loop lendo os QVD e incluir a coluna com null().

           

          FOR Each ArquivoQVD in filelist ('*.qvd')

              Tabela:

              LOAD

                *,

                null()   as NovoCampo

              FROM $(ArquivoQVD) (qvd);

              Store Tabela into '$(ArquivoQVD)' (qvd);

              DROP Table Tabela;

          NEXT ArquivoQVD

           

          Mas se precisar popular esta coluna com a nova informação.....então o ideal seria ler o novo campo com somente a chave necessária e incluir na leitura do QVD......

           

          exemplo

           

           

           

          FOR Each ArquivoQVD in filelist ('*.qvd')

              Tabela:

              LOAD

                *

              FROM $(ArquivoQVD) (qvd);

             

              left join (Tabela)

              LOAD

                 CampoChave1,

                 CampoChave2,

                 CampoChave3,

                 CampoNOVO;

              SELECT C1,C2,C3,CN FROM BANCOSQL....

             

              Store Tabela into '$(ArquivoQVD)' (qvd);

              DROP Table Tabela;

             

          NEXT ArquivoQVD;

           

           

           

          Lembrar  que se for ler todos os campos do banco de dados necessarios no QVD fica pesado e lento, portanto coloquei como necessário os campos chaves para "ligar" no left join e mais o campo novo.

          • Re: Nova coluna que não esta nos anteriores
            Paulo Silva

            Faz o seguinte,

            1-Carregue seu qvd em uma tabela, por exemplo:

            [TabelaTeste]:

            LOAD

            *

            FROM [...SeuQVD.qvd](qvd);

             

            2-Crie um INLINE com esta nova coluna:

            [InlineTemp]:

            LOAD * INLINE

            [NovaColuna

            ''

            ];

             

            3-Junta o INLINE com a Tabela do QVD:

            CONCATENATE([TabelaTeste])

            LOAD

                [NovaColuna]

            RESIDENT [InlineTemp];

             

            4-Depois é só gravar tudo no qvd e apagar a tabela

            STORE [Tabela Teste] INTO [...SeuQVD.qvd](qvd);

            DROP TABLE [TabelaTeste];