16 Replies Latest reply: May 10, 2018 12:42 PM by Ricardo gerhard RSS

    Load no Postgresql

    andre tonini

      Pessoal,

       

             O banco de dados foi alterado, de Firebird para Postgresql porém estou revendo os cenários para adequação mas fiquei na duvida pois utilizo no LOAD*, o calendário mas não funciona o Load*, no postgresql - alguem sabe como resolver?

       

             

       

      ODBC CONNECT TO PostgreSQL30;

       

       

       

       

      // ------- Viagem --------- //

      LOAD *,

          YEAR(DT_EMISSAO) AS ANO_FAT,

          MONTH(DT_EMISSAO) AS MES_FAT,    

          DAY(DT_EMISSAO) AS DIA_FAT,

          DATE(DT_EMISSAO) AS DATA_FAT;

             

      SQL SELECT

      A.NR_VIAGEM,

      A.NR_VIAGEM_SEQ,

      A.CD_VEICULO,

      A.CD_MOTORISTA,

      A.DT_SAIDA,

      A.DT_RETORNO,

      A.KM_SAIDA,

      A.KM_RETORNO,

      A.MM_OBSERVACAO,

      A.FL_BLOQUEADA,

      A.HM_SAIDA,

      A.HM_RETORNO,

      B.NM_MOTORISTA,

      C.NR_ORDEM,

      C.PC_COMISSAO,

      C.VL_BASE_COMISSAO,

      C.VL_COMISSAO,

      D.CD_SITUACAO,

      D.VL_TOTAL AS VL_FRETE,

      D.CD_LOC_COLETA AS LOCAL_COLETA,

      D.CD_LOC_EMISSAO,

      D.CD_LOC_ENTREGA AS LOCAL_CHEGADA,

      D.QT_PESO_FRETE,

      D.CD_NATCARGA,

      D.DT_EMISSAO,

      D.NR_CONHEC AS NR_CONHEC_VIAG,

      D.SR_CONHEC AS SR_CONHEC_VIAG

       

       

      FROM VIAGEM A LEFT JOIN MOTORISTA B ON

                    A.CD_MOTORISTA = B.CD_MOTORISTA

                   

                    LEFT OUTER JOIN CONHECTOVM C ON

                    A.NR_VIAGEM = C.NR_VIAGEM AND

                    A.NR_VIAGEM_SEQ = C.NR_VIAGEM_SEQ

                   

                    LEFT OUTER JOIN CONHECTO D ON

                    C.NR_ORDEM = D.NR_ORDEM   

                                          

      WHERE D.DT_EMISSAO > '31.12.2009' AND D.CD_SITUACAO <> '3';

        • Re: Load no Postgresql
          Ricardo gerhard

          Boa tarde Andre,

           

             Já chegaste a fazer o seguinte teste?

          - Somente SQL SELECT sem o LOAD;

          - Posterior um concatenate para criar os campos adicionais;

          • Re: Load no Postgresql
            Thiago Justen Teixeira

            Talvez assim:

             

            // ------- Viagem --------- //

            LOAD *,

                YEAR(DT_EMISSAO) AS ANO_FAT,

                MONTH(DT_EMISSAO) AS MES_FAT,   

                DAY(DT_EMISSAO) AS DIA_FAT,

                DATE(DT_EMISSAO) AS DATA_FAT;

                  

            SQL SELECT

            A.NR_VIAGEM,

            A.NR_VIAGEM_SEQ,

            A.CD_VEICULO,

            A.CD_MOTORISTA,

            A.DT_SAIDA,

            A.DT_RETORNO,

            A.KM_SAIDA,

            A.KM_RETORNO,

            A.MM_OBSERVACAO,

            A.FL_BLOQUEADA,

            A.HM_SAIDA,

            A.HM_RETORNO,

            B.NM_MOTORISTA,

            C.NR_ORDEM,

            C.PC_COMISSAO,

            C.VL_BASE_COMISSAO,

            C.VL_COMISSAO,

            D.CD_SITUACAO,

            D.VL_TOTAL AS VL_FRETE,

            D.CD_LOC_COLETA AS LOCAL_COLETA,

            D.CD_LOC_EMISSAO,

            D.CD_LOC_ENTREGA AS LOCAL_CHEGADA,

            D.QT_PESO_FRETE,

            D.CD_NATCARGA,

            D.DT_EMISSAO AS DT_EMISSAO,

            D.NR_CONHEC AS NR_CONHEC_VIAG,

            D.SR_CONHEC AS SR_CONHEC_VIAG

             

             

            FROM VIAGEM A LEFT JOIN MOTORISTA B ON

                          A.CD_MOTORISTA = B.CD_MOTORISTA

                        

                          LEFT OUTER JOIN CONHECTOVM C ON

                          A.NR_VIAGEM = C.NR_VIAGEM AND

                          A.NR_VIAGEM_SEQ = C.NR_VIAGEM_SEQ

                        

                          LEFT OUTER JOIN CONHECTO D ON

                          C.NR_ORDEM = D.NR_ORDEM  

                                               

            WHERE D.DT_EMISSAO > '31.12.2009' AND D.CD_SITUACAO <> '3';

              • Re: Load no Postgresql
                andre tonini

                Thiago,

                 

                      Boa tarde, pois é dessa forma havia tentando mas dá erro não encontra o campo DT_EMISSAO


                      Att,


                      André Tonini

                  • Re: Load no Postgresql
                    Thiago Justen Teixeira

                    Consegue printar a tela de erro?

                      • Re: Load no Postgresql
                        andre tonini

                        Oi Thiago,

                         

                             segue abaixo imagem...

                         

                        1.png

                          • Re: Load no Postgresql
                            Thiago Justen Teixeira

                            Teste:

                             

                            // ------- Viagem --------- //

                            LOAD *,

                                YEAR(DT_EMISSAO) AS ANO_FAT,

                                MONTH(DT_EMISSAO) AS MES_FAT,   

                                DAY(DT_EMISSAO) AS DIA_FAT,

                                DATE(DT_EMISSAO) AS DATA_FAT;

                            LOAD

                                      *,

                                      D.DT_EMISSAO AS DT_EMISSAO;      

                            SQL SELECT

                            A.NR_VIAGEM,

                            A.NR_VIAGEM_SEQ,

                            A.CD_VEICULO,

                            A.CD_MOTORISTA,

                            A.DT_SAIDA,

                            A.DT_RETORNO,

                            A.KM_SAIDA,

                            A.KM_RETORNO,

                            A.MM_OBSERVACAO,

                            A.FL_BLOQUEADA,

                            A.HM_SAIDA,

                            A.HM_RETORNO,

                            B.NM_MOTORISTA,

                            C.NR_ORDEM,

                            C.PC_COMISSAO,

                            C.VL_BASE_COMISSAO,

                            C.VL_COMISSAO,

                            D.CD_SITUACAO,

                            D.VL_TOTAL AS VL_FRETE,

                            D.CD_LOC_COLETA AS LOCAL_COLETA,

                            D.CD_LOC_EMISSAO,

                            D.CD_LOC_ENTREGA AS LOCAL_CHEGADA,

                            D.QT_PESO_FRETE,

                            D.CD_NATCARGA,

                            D.DT_EMISSAO,

                            D.NR_CONHEC AS NR_CONHEC_VIAG,

                            D.SR_CONHEC AS SR_CONHEC_VIAG

                             

                             

                            FROM VIAGEM A LEFT JOIN MOTORISTA B ON

                                          A.CD_MOTORISTA = B.CD_MOTORISTA

                                        

                                          LEFT OUTER JOIN CONHECTOVM C ON

                                          A.NR_VIAGEM = C.NR_VIAGEM AND

                                          A.NR_VIAGEM_SEQ = C.NR_VIAGEM_SEQ

                                        

                                          LEFT OUTER JOIN CONHECTO D ON

                                          C.NR_ORDEM = D.NR_ORDEM  

                                                               

                            WHERE D.DT_EMISSAO > '31.12.2009' AND D.CD_SITUACAO <> '3';

                              • Re: Load no Postgresql
                                andre tonini

                                Ola Thiago,

                                 

                                        Fiz o teste e deu erro tbm...acusando como segue imagem.

                                 

                                1.png

                                  • Re: Load no Postgresql
                                    Thiago Justen Teixeira

                                    Uma pergunta (pode até ser idiota), mas esse campo DT.DT_EMISSAO existe na base mesmo?

                                      • Re: Load no Postgresql
                                        andre tonini

                                        Oi Thiago...Sim esse campo DT_EMISSAO existe, inclusive se eu não colocar o LOAD ele trás esse campo do banco.

                                         

                                        Att

                                         

                                        André Tonini

                                          • Re: Load no Postgresql
                                            Thiago Justen Teixeira

                                            Sendo assim, faça um teste:

                                             

                                             

                                            VIAGEM_TEMP:

                                            SQL SELECT

                                            A.NR_VIAGEM,

                                            A.NR_VIAGEM_SEQ,

                                            A.CD_VEICULO,

                                            A.CD_MOTORISTA,

                                            A.DT_SAIDA,

                                            A.DT_RETORNO,

                                            A.KM_SAIDA,

                                            A.KM_RETORNO,

                                            A.MM_OBSERVACAO,

                                            A.FL_BLOQUEADA,

                                            A.HM_SAIDA,

                                            A.HM_RETORNO,

                                            B.NM_MOTORISTA,

                                            C.NR_ORDEM,

                                            C.PC_COMISSAO,

                                            C.VL_BASE_COMISSAO,

                                            C.VL_COMISSAO,

                                            D.CD_SITUACAO,

                                            D.VL_TOTAL AS VL_FRETE,

                                            D.CD_LOC_COLETA AS LOCAL_COLETA,

                                            D.CD_LOC_EMISSAO,

                                            D.CD_LOC_ENTREGA AS LOCAL_CHEGADA,

                                            D.QT_PESO_FRETE,

                                            D.CD_NATCARGA,

                                            D.DT_EMISSAO,

                                            D.NR_CONHEC AS NR_CONHEC_VIAG,

                                            D.SR_CONHEC AS SR_CONHEC_VIAG

                                            FROM VIAGEM A LEFT JOIN MOTORISTA B ON

                                                          A.CD_MOTORISTA = B.CD_MOTORISTA

                                                      

                                                          LEFT OUTER JOIN CONHECTOVM C ON

                                                          A.NR_VIAGEM = C.NR_VIAGEM AND

                                                          A.NR_VIAGEM_SEQ = C.NR_VIAGEM_SEQ

                                                      

                                                          LEFT OUTER JOIN CONHECTO D ON

                                                          C.NR_ORDEM = D.NR_ORDEM

                                                                              

                                            WHERE D.DT_EMISSAO > '31.12.2009' AND D.CD_SITUACAO <> '3';

                                             

                                            VIAGEM:

                                            LOAD

                                                *,

                                                YEAR(DT_EMISSAO) AS ANO_FAT,

                                                MONTH(DT_EMISSAO) AS MES_FAT,   

                                                DAY(DT_EMISSAO) AS DIA_FAT,

                                                DATE(DT_EMISSAO) AS DATA_FAT

                                            Resident VIAGEM_TEMP;

                                            DROP TABLE VIAGEM_TEMP;

                            • Re: Load no Postgresql
                              Ricardo gerhard

                              Bom dia Andre,

                               

                                 Faça a carga como comentado com SQL Select e depois o load residente com o nome do campo carregado.

                                 Talvez ele esteja sendo carregado como D.DT_EMISSAO