Pular para o conteúdo
Visualizando 15 posts - 1 até 15 (de 29 do total)
  • Autor
    Posts
  • #83540
    Anônimo

      Pessoal, estou tentando ler um txt e carregar em uma tabela no banco através do sqlloader…mas alguém aí sabe como eu faço esse processo? estou um pouco perdido nisso. meu banco é oracle10g.

      obs: tem como eu fazer o sqlloader no windows? 🙄

      #83541
      Avatar photoRegis Araujo
      Participante

        Ola Cleber, boa tarde!

        Eu utilizo muito o SqlLoader no Oracle 8i, não sei se são as mesmas configurações no 10g, mas vou postar abaixo…

        Voce precisa criar uma pasta no C da máquina, jogar todos os arquivos dentro desta pasta e criar o arquivo de configuração (CTL), neste arquivo você irá setar a maneira que ele deverá ler o TXT.

        Arquivo CTL:

        Abra o bloco de notas e cole o codigo abaixo.

        load data
        infile ‘C:IMPORTTXTNome_Arquivo.txt’
        into table NOME_TABELA
        fields terminated by “,” optionally enclosed by ‘”‘
        ( CAMPO1, CAMPO2, CAMPO3,… )

        Obs: No lugar da , em “,” você coloca como os valores são separados dentro do arquivo e no lugar de ‘ ” ‘ você coloca com que caracter termina a linha, assim ele irá pular para a proxima linha..
        E abaixo os campos que deverão receber os registros na ordem.
        Esta é uma maneira bem basica de importar os registros.

        Após isto, salve este arquivo com qualquer nome, eu costumo salvar como ImpNome_Arquivo.ctl

        Abra o CMD, acesse o diretório C:oracleora81bin e digite

        sqlldr usuario/senha@SERVIDOR control=ImpNome_Arquivo.ctl

        E PRONTO… Basta você observar os registros sendo importados…

        Já consegui importar 5 milhoes de registros em 1m e 35 segundos…

        Qualquer dúvida pode perguntar…

        Espero ter ajudado…

        #83542
        Avatar photoRegis Araujo
        Participante

          [quote=”Thunder_Catz”:2u3jbk3g]Ola Cleber, boa tarde!

          Eu utilizo muito o SqlLoader no Oracle 8i, não sei se são as mesmas configurações no 10g, mas vou postar abaixo…

          Voce precisa criar uma pasta no C da máquina, jogar todos os arquivos dentro desta pasta e criar o arquivo de configuração (CTL), neste arquivo você irá setar a maneira que ele deverá ler o TXT.

          Arquivo CTL:

          Abra o bloco de notas e cole o codigo abaixo.

          load data
          infile ‘C:IMPORTTXTNome_Arquivo.txt’
          into table NOME_TABELA
          fields terminated by “,” optionally enclosed by ‘”‘
          ( CAMPO1, CAMPO2, CAMPO3,… )

          Obs: No lugar da , em “,” você coloca como os valores são separados dentro do arquivo e no lugar de ‘ ” ‘ você coloca com que caracter termina a linha, assim ele irá pular para a proxima linha..
          E abaixo os campos que deverão receber os registros na ordem.
          Esta é uma maneira bem basica de importar os registros.

          Após isto, salve este arquivo com qualquer nome, eu costumo salvar como ImpNome_Arquivo.ctl

          Abra o CMD, acesse o diretório C:oracleora81bin e digite

          sqlldr usuario/senha@SERVIDOR control=ImpNome_Arquivo.ctl

          E PRONTO… Basta você observar os registros sendo importados…

          Já consegui importar 5 milhoes de registros em 1m e 35 segundos…

          Qualquer dúvida pode perguntar…

          Espero ter ajudado…[/quote]

          Só Corrigindo coisa…. no CMD tem que digitar assim..

          sqlldr usuario/senha@SERVIDOR control=C:IMPORTTXTImpNome_Arquivo.ctl

          Tem que informar onde esta o arquivo CTL corretamente…

          #83543
          Rodrigo Mesquita
          Participante

            Cleber,

            Se vc usa o plsql developer, no menu “TOOLS” tem a opção “text importer” acho bem simples e fácil de usar para importar txt´s.

            #83546
            Anônimo

              beleza brother, tá ajudando bastante. agora como eu faço para startar esse processo automaticamente todos os dias num determinado horário?

              #83547
              Avatar photoRegis Araujo
              Participante

                Fala Cleber..

                Bom, ai já fica mais complicado, se você fizer da maneira que eu falei via SqlLoader, você tem que alterar as configurações do arquivo de controle CTL, para ele encontrar o arquivo TXT.

                Se o nome do arquivo for sempre o mesmo e a tabela também, você pode criar uma regra no windows que irá executar o comando “sqlldr usuario/senha@SERVIDOR control=C:IMPORTTXTImpNome_Arquivo.ctl” no horario que você quiser…

                Abraços…

                #83548
                Anônimo

                  cara tá me dando esse erro aqui:

                  SQL*Loader-522: falha em lfiopn para o arquivo (705.log)

                  #83549
                  Avatar photoRegis Araujo
                  Participante

                    Cleber,

                    Posta aqui como ficou o conteudo do seu arquivo .CTL

                    Abraços…

                    #83550
                    Avatar photoRegis Araujo
                    Participante

                      [quote=”Thunder_Catz”:1xj3os3y]Cleber,

                      Posta aqui como ficou o conteudo do seu arquivo .CTL

                      Abraços…[/quote]

                      Ahh… E dentro da pasta ele tbm deve ter criado um arquivo de erro…

                      Posta o conteudo deste arquivo tbm…

                      #83551
                      Anônimo

                        Não foi criado arquivo de erro. arquivo CTL a baixo:

                        LOAD DATA
                        INFILE ‘C:ArquivosSAP200806MRED0001C.txt’
                        INSERT
                        INTO TABLE BEA.TBEA_CARGA_LANCTO_CONTABIL_TMP
                        (
                        CLCT_NUM_LAN_SAP POSITION(001:010) CHAR,
                        CLCT_ANOMES_MOVTO POSITION(011:016) CHAR,
                        CLCT_ORIGEM POSITION(017:019) CHAR,
                        CLCT_REF_LANC POSITION(020:037) CHAR,
                        CLCT_COD_EMPRESA POSITION(038:041) CHAR,
                        CLCT_COD_FILIAL POSITION(042:045) CHAR,
                        CLCT_DAT_DOCTO POSITION(046:053) CHAR,
                        CLCT_TIP_DOCTO POSITION(054:055) CHAR,
                        CLCT_DAT_LANCTO POSITION(056:065) CHAR,
                        CLCT_TEX_CAB POSITION(066:090) CHAR,
                        CLCT_IND_TIP_LANCTO POSITION(091:091) CHAR,
                        CLCT_LAN_SAP_ESTORNO POSITION(092:101) CHAR,
                        CLCT_TIP_LAN_SAP_EST POSITION(102:102) CHAR
                        )

                        #83553
                        Avatar photoRegis Araujo
                        Participante

                          Opa Cleber..

                          Eu não utilizo desta maneira, mas para você fazer desta maneira é bem mais simples, você tem que fazer assim..:

                          ——————-
                          LOAD DATA
                          INFILE *
                          INSERT
                          INTO TABLE BEA.TBEA_CARGA_LANCTO_CONTABIL_TMP
                          (
                          CLCT_NUM_LAN_SAP POSITION(001:010) CHAR(10),
                          CLCT_ANOMES_MOVTO POSITION(011:016) CHAR(6),
                          CLCT_ORIGEM POSITION(017:019) CHAR(3),
                          CLCT_REF_LANC POSITION(020:037) CHAR(17),
                          CLCT_COD_EMPRESA POSITION(038:041) CHAR(4),
                          CLCT_COD_FILIAL POSITION(042:045) CHAR(4),
                          CLCT_DAT_DOCTO POSITION(046:053) CHAR(9),
                          CLCT_TIP_DOCTO POSITION(054:055) CHAR(2),
                          CLCT_DAT_LANCTO POSITION(056:065) CHAR(10),
                          CLCT_TEX_CAB POSITION(066:090) CHAR(25),
                          CLCT_IND_TIP_LANCTO POSITION(091:091) CHAR(1),
                          CLCT_LAN_SAP_ESTORNO POSITION(092:101) CHAR(10),
                          CLCT_TIP_LAN_SAP_EST POSITION(102:102) CHAR(1)
                          )
                          begindata

                          COLE AQUI TODO O CONTEUDO DO SEU ARQUIVO
                          —————

                          Depois salve como .CTL e rode o processo no CMD ou via SQL´PLUS:

                          Via CMD:
                          sqlldr usuario/senha@SERVIDOR control=C:IMPORTTXTImpNome_Arquivo.ctl

                          Via SQL´PLUS
                          $sqlldr usuario/senha@SERVIDOR control=C:IMPORTTXTImpNome_Arquivo.ctl

                          Poste aqui se deu certo…

                          Abraços…

                          #83554
                          Anônimo

                            Acontece o memso erro e não me gerou nenhum arquivo de erro.

                            #83555
                            Anônimo

                              coloquei somente duas linhas do conteúdo do arquivo, veja se é assim mesmo:

                              LOAD DATA
                              INFILE *
                              INSERT
                              INTO TABLE BEA.TBEA_CARGA_LANCTO_CONTABIL_TMP
                              (
                              CLCT_NUM_LAN_SAP POSITION(001:010) CHAR,
                              CLCT_ANOMES_MOVTO POSITION(011:016) CHAR,
                              CLCT_ORIGEM POSITION(017:019) CHAR,
                              CLCT_REF_LANC POSITION(020:037) CHAR,
                              CLCT_COD_EMPRESA POSITION(038:041) CHAR,
                              CLCT_COD_FILIAL POSITION(042:045) CHAR,
                              CLCT_DAT_DOCTO POSITION(046:053) CHAR,
                              CLCT_TIP_DOCTO POSITION(054:055) CHAR,
                              CLCT_DAT_LANCTO POSITION(056:065) CHAR,
                              CLCT_TEX_CAB POSITION(066:090) CHAR,
                              CLCT_IND_TIP_LANCTO POSITION(091:091) CHAR,
                              CLCT_LAN_SAP_ESTORNO POSITION(092:101) CHAR,
                              CLCT_TIP_LAN_SAP_EST POSITION(102:102) CHAR
                              )
                              begindata

                              5300000067|062008||COF0060206200801|MRED||28/06/2008|02|28/06/2008|FATURAMENTO|||
                              5300000065|062008||COF0030206200801|MRED||28/06/2008|02|28/06/2008|FATURAMENTO|||

                              #83556
                              Avatar photoRegis Araujo
                              Participante

                                Cleber,

                                Todos os campos na sua tabela são VARCHAR??
                                Pois você declarou no arquivo que todos são CHAR, se houver algum registro que não seja CHAR ele irá apresentar erros…

                                Tem como você me passar uma amosta deste arquivo?
                                Ou como ele esta estruturado dentro do arquivo.txt?

                                E eu irei testar aqui e posto o que apresentou.

                                Abraços…

                                #83557
                                Avatar photoRegis Araujo
                                Participante

                                  Cleber,

                                  Faça um teste com o script que eu vou postar abaixo…

                                  load data
                                  infile *
                                  into table TBEA_CARGA_LANCTO_CONTABIL_TMP
                                  fields terminated by “|” optionally enclosed by ‘”‘
                                  (
                                  CLCT_NUM_LAN_SAP,
                                  CLCT_ANOMES_MOVTO,
                                  CLCT_ORIGEM,
                                  CLCT_REF_LANC,
                                  CLCT_COD_EMPRESA,
                                  CLCT_COD_FILIAL,
                                  CLCT_DAT_DOCTO,
                                  CLCT_TIP_DOCTO,
                                  CLCT_DAT_LANCTO,
                                  CLCT_TEX_CAB,
                                  CLCT_IND_TIP_LANCTO,
                                  CLCT_LAN_SAP_ESTORNO,
                                  CLCT_TIP_LAN_SAP_EST POSITION(102:102) CHAR(1)
                                  )
                                  begindata
                                  5300000067|062008||COF0060206200801|MRED||28/06/2008|02|28/06/2008|FATURAMENTO|||
                                  5300000065|062008||COF0030206200801|MRED||28/06/2008|02|28/06/2008|FATURAMENTO|||

                                  Ou

                                  load data
                                  infile ‘C:ArquivosSAP200806MRED0001C.txt’
                                  into table TBEA_CARGA_LANCTO_CONTABIL_TMP
                                  fields terminated by “|” optionally enclosed by ‘”‘
                                  (
                                  CLCT_NUM_LAN_SAP,
                                  CLCT_ANOMES_MOVTO,
                                  CLCT_ORIGEM,
                                  CLCT_REF_LANC,
                                  CLCT_COD_EMPRESA,
                                  CLCT_COD_FILIAL,
                                  CLCT_DAT_DOCTO,
                                  CLCT_TIP_DOCTO,
                                  CLCT_DAT_LANCTO,
                                  CLCT_TEX_CAB,
                                  CLCT_IND_TIP_LANCTO,
                                  CLCT_LAN_SAP_ESTORNO,
                                  CLCT_TIP_LAN_SAP_EST POSITION(102:102) CHAR(1)
                                  )

                                  Abraços…

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