Pular para o conteúdo
  • Este tópico contém 8 respostas, 2 vozes e foi atualizado pela última vez 17 anos atrás por vieri.
Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Autor
    Posts
  • #85642
    vieri
    Participante

      SQL *LOADER

      Caros estou criando(testes) uma carga no Loader com a seguinte codificação.

      chamada do sqlldr:

      sqlldr userid=system/senha control=ctrl.txt

      conteúdo do ctrl.txt:

      LOAD DATA
      CHARACTERSET UTF8
      INFILE ‘teste.txt’
      CONTINUEIF LAST != “|”
      INTO TABLE VW_BRIEFING_PROD_BUSCA_1
      TRUNCATE
      FIELDS TERMINATED BY ‘||’
      TRAILING NULLCOLS
      (COD_PRODUTO_INTERNO ,COD_CARACT_BRIEFING ,NOM_CARACT_BRIEFING,COD_TIPO_VALOR_BRIEFING ,TEXTO_LIVRE CHAR(4000),VALOR_LIVRE , DATA_LIVRE , IND_ATIVO ,NUM_PRIORIDADE_BRIEFING ,COD_PADRAO_MEDIDA ,NOM_PADRAO_MEDIDA,COD_PRODUTO_ORIGEM )

      Amostra de linhas do texte.bad
      (arquivo que contém linhas rejeitadas na carga).

      ||||||1||13||0||||0|
      Desfrute de um delicioso vinho, com requinte e glamour! Não precisa ser um sommelier para se preocupar com cada detalhe da degustação. Mostre isso aos conados, servindo a sua bebida predileta, com este decanter. Ele possui um bojo menor, o que evita que o líquido entre em contato com o ar, mantendo o mais pur sabor e trazendo à tona o seu incrível aroma. Com ele, complete, com muito bom gosto, a sua comemoração!

      ||||||1||11||0||||0|
      Para animar uma festa ou reunião de amigos, a pizza sempre é a melhor pedida! Com este cortador, não deixe a sua visita esperando por muito tempo: corte, muita facilidade e rapidez, fatias na medida ideal! Fabricado em inox, é resistente e possui um fio durável, permitindo que você não perca seu tempo amoo, afinal, você também merece ter o seu pedaço ainda quentinho…
      ||||||1||7||0||||0|
      Mais praticidade e eficiência em seus trabalhos. Para garantir qualidade e beleza em seu serviço como ladrilheiro, utilize este cortador de pisos e azulej. Opte por ele e faça, com rapidez e facilidade, os recortes necessários no seu dia-a-dia, que ficarão mais precisos e bem acabados. Com um cabo ergonômiproporciona conforto e estabilidade ao manuseio, garantindo segurança para esta tarefa manual.

      ||||||1||16||0||||0|
      Tenha uma noite de descanso agradável! Seu sono está garantido, com esta colcha Queen de chenile. Fabricada em 100% algodão, é ideal para você, que busciez e suavidade para o toque da sua pele, além de beleza e charme para o seu quarto! Suas noites nunca mais vão ser as mesmas, depois que sentir o confortoue ela proporciona a você, que merece sempre o bem-estar! Opte por ela e não queira mais levantar da cama!

      ||||||1||7||0||||0|
      Para gostosas refeições ao ar livre ou para uma partida de cartas com os amigos, você não pode abrir mão do estilo. Com esta mesa redonda, feita de madeque suporta até 50 Kg, você vai poder usufruir desse conforto, sem deixar de lado a elegância e o bom gosto, muito bem reunidos no design e estilo do móvPrática, é dobrável, podendo ser guardada em qualquer cantinho, sem ocupar muito espaço. Perfeita para varandas e jardins, vai tornar seus momentos bem magradáveis.

      São em torno de 700mil linhas e apenas 20 estão com problemas
      estas são umas delas.

      alguem tem alguma idéia do problema, ou alguma maneira melhor
      de fazer esta carga?

      contéudo do crtl.log :

      value used for ROWS parameter changed from 64 to 37
      Record 27123: Rejected – Error on table VW_BRIEFING_PROD_BUSCA_1, column COD_PRODUTO_INTERNO.
      Field in data file exceeds maximum length
      Record 123232: Rejected – Error on table VW_BRIEFING_PROD_BUSCA_1, column COD_PRODUTO_INTERNO.
      Field in data file exceeds maximum length
      Record 140997: Rejected – Error on table VW_BRIEFING_PROD_BUSCA_1, column COD_PRODUTO_INTERNO.
      Field in data file exceeds maximum length
      Record 186100: Rejected – Error on table VW_BRIEFING_PROD_BUSCA_1, column COD_PRODUTO_INTERNO.
      Field in data file exceeds maximum length
      Record 263168: Rejected – Error on table VW_BRIEFING_PROD_BUSCA_1, column COD_PRODUTO_INTERNO.
      Field in data file exceeds maximum length
      Record 275967: Rejected – Error on table VW_BRIEFING_PROD_BUSCA_1, column TEXTO_LIVRE.
      Field in data file exceeds maximum length
      Record 322565: Rejected – Error on table VW_BRIEFING_PROD_BUSCA_1, column TEXTO_LIVRE.
      Field in data file exceeds maximum length
      Record 400519: Rejected – Error on table VW_BRIEFING_PROD_BUSCA_1, column COD_PRODUTO_INTERNO.
      Field in data file exceeds maximum length
      Record 505375: Rejected – Error on table VW_BRIEFING_PROD_BUSCA_1, column COD_PRODUTO_INTERNO.
      Field in data file exceeds maximum length
      Record 510519: Rejected – Error on table VW_BRIEFING_PROD_BUSCA_1, column COD_PRODUTO_INTERNO.
      Field in data file exceeds maximum length
      Record 537819: Rejected – Error on table VW_BRIEFING_PROD_BUSCA_1, column COD_PRODUTO_INTERNO.
      Field in data file exceeds maximum length
      Record 540521: Rejected – Error on table VW_BRIEFING_PROD_BUSCA_1, column COD_PRODUTO_INTERNO.
      Field in data file exceeds maximum length
      Record 543797: Rejected – Error on table VW_BRIEFING_PROD_BUSCA_1, column COD_PRODUTO_INTERNO.
      Field in data file exceeds maximum length
      Record 549445: Rejected – Error on table VW_BRIEFING_PROD_BUSCA_1, column COD_PRODUTO_INTERNO.
      Field in data file exceeds maximum length
      Record 551572: Rejected – Error on table VW_BRIEFING_PROD_BUSCA_1, column COD_PRODUTO_INTERNO.
      Field in data file exceeds maximum length
      Record 593105: Rejected – Error on table VW_BRIEFING_PROD_BUSCA_1, column COD_PRODUTO_INTERNO.
      Field in data file exceeds maximum length

      Estrutura da tabela:

      tabela igual a origem dos dados.
      SQL> desc system.VW_BRIEFING_PROD_BUSCA
      Name Null? Type
      —————————————– ——– —————————-
      COD_PRODUTO_INTERNO NUMBER(10)
      COD_CARACT_BRIEFING NUMBER(10)
      NOM_CARACT_BRIEFING VARCHAR2(60)
      COD_TIPO_VALOR_BRIEFING NUMBER(10)
      TEXTO_LIVRE VARCHAR2(4000)
      VALOR_LIVRE NUMBER(19,4)
      DATA_LIVRE DATE
      IND_ATIVO NUMBER(2)
      NUM_PRIORIDADE_BRIEFING NUMBER(10)
      COD_PADRAO_MEDIDA NUMBER(10)
      NOM_PADRAO_MEDIDA VARCHAR2(35)
      COD_PRODUTO_ORIGEM NUMBER(10)

      tabela com datatypes alterados pra diminuir errors
      SQL> desc system.VW_BRIEFING_PROD_BUSCA_1
      Name Null? Type
      —————————————– ——– —————————-
      COD_PRODUTO_INTERNO VARCHAR2(300)
      COD_CARACT_BRIEFING VARCHAR2(60)
      NOM_CARACT_BRIEFING VARCHAR2(60)
      COD_TIPO_VALOR_BRIEFING VARCHAR2(60)
      TEXTO_LIVRE VARCHAR2(4000)
      VALOR_LIVRE VARCHAR2(60)
      DATA_LIVRE VARCHAR2(60)
      IND_ATIVO VARCHAR2(60)
      NUM_PRIORIDADE_BRIEFING VARCHAR2(60)
      COD_PADRAO_MEDIDA VARCHAR2(60)
      NOM_PADRAO_MEDIDA VARCHAR2(60)
      COD_PRODUTO_ORIGEM VARCHAR2(60)

      estou mechendo nesse raio a 1 semana apenas acho que estou comendo poeira do loader tem algo faltando…

      solicito ajuda !! rs

      abraços..

      #85646
      Avatar photoRegis Araujo
      Participante

        Vieri.. boa tarde..

        Só por dúvida.. tem como vc postar umas 5 linhas dos registros que vc conseguiu importar corretamente????

        Abraços..

        #85648
        Avatar photoRegis Araujo
        Participante

          Vieri… boa tarde…

          As linhas que vc mostrou estão com problemas… pois elas estão inserindo os valores de forma desposicionada.. verifique se os caracteres de terminação das linhas anteriores estão corretos…

          Deverá existir sempre um || no final de cada valor e de cada linha… ou o sqlloader não irá importar linha alguma…

          Faça um teste.. pegue o arquivo .BAD que vc informou que tem apenas 20 linhas e coloque um || no final de cada linha e importe ele… vc irá verificar no arquivo .log que irá apresentar a mesma mensagem de antes mas desta vez a coluna será a IND_ATIVO…

          Com estas linhas ele está inserindo desta maneira..

          null -> COD_PRODUTO_INTERNO
          ||
          null -> COD_CARACT_BRIEFING
          ||
          null -> NOM_CARACT_BRIEFING
          ||
          1 -> COD_TIPO_VALOR_BRIEFING
          ||
          13 -> TEXTO_LIVRE
          ||
          0 -> VALOR_LIVRE
          ||
          null -> DATA_LIVRE
          ||
          0|TEXTO -> IND_ATIVO

          null -> NUM_PRIORIDADE_BRIEFING

          null -> COD_PADRAO_MEDIDA

          null -> NOM_PADRAO_MEDIDA

          null -> COD_PRODUTO_ORIGEM

          Em algum lugar existe uma quebra de linha que informa que o valor do seu TEXTO deverá ser inserido no campo COD_PRODUTO_INTERNO…

          Bom.. espero ter ajudado…

          Abraços…

          #85650
          vieri
          Participante

            extamente isso que ocorreu thunder,

            em alguns trechos to txt pulou linhas e o cod_produto interno
            recebeu valor errado.

            Retirando e traillin null cols e trocando o || por ;
            consegui carregar a tabela com somente campo varchar com
            sucesso, na outra nomarlizda ainda com muitos erros
            de datatype.

            #85651
            vieri
            Participante

              algumas das linhas armazenadas com sucesso.

              68989||3526||Instruções de uso||5||||.0000||1900-01-01 00:00:00.000||1||11||0||0||0|
              68990||696||Título original||1||Stealth||.0000||1900-01-01 00:00:00.000||1||3||0||0||0|
              68990||4409||Ano de Produção||1||2005||.0000||1900-01-01 00:00:00.000||1||11||0||0||0|
              68990||8951||Região do DVD||5||||.0000||1900-01-01 00:00:00.000||1||20||0||0||0|
              68990||9059||Idioma da legenda||5||||.0000||1900-01-01 00:00:00.000||1||16||0||0||0|
              68990||635||Colorido||5||||.0000||1900-01-01 00:00:00.000||1||19||0||0||0|
              68990||7011||Produtor||1||Mike Medavoy, Arnold Messer, Laura Ziskin||.0000||1900-01-01 00:00:00.000||1||8||0||0||0|
              68990||4397||Título||1||Ameaça Invisível||.0000||1900-01-01 00:00:00.000||1||5||0||0||0|
              68990||8638||Gênero||5||||.0000||1900-01-01 00:00:00.000||1||1||0||0||0|
              68990||9298||Clássico||5||||.0000||1900-01-01 00:00:00.000||1||24||0||0||0|
              68990||8987||Formato de tela||5||||.0000||1900-01-01 00:00:00.000||1||13||0||0||0|
              68990||9159||Tempo de duração||3||||121.0000||1900-01-01 00:00:00.000||1||22||40||Tempo – minuto||0|
              68990||8902||País de origem||5||||.0000||1900-01-01 00:00:00.000||1||12||0||0||0|
              68990||637||Diretor||1||Rob Cohen||.0000||1900-01-01 00:00:00.000||1||2||0||0||0|

              #85653
              Avatar photoRegis Araujo
              Participante

                Fala Vieri…

                Caraca… a diferença das linhas é absurda….

                Bom amigo, quando eu precisei aprender sobre Sql*Loader.. eu encontrei este FAQ.. onde ele da exemplos de como criar o arquivo Ctl de diversas maneiras e determinar os datatypes de acordo com a sua necessidade…

                Me ajudou muito.. tanto que está como SUPERFAVORITOS e eu copiei todo o texto para caso o site fique fora….

                Creio que já testei todas as possibilidades que estão neste FAQ e garanto.. são excelentes…!!! Tanto que realizei um teste de import com filtros e tratamento de dados por ete arquivo e por uma aplicação Delphi..

                3.000.000 de linhas em um arquivo TXT…

                A aplicação Delphi com conexão BDE.. tive que abortar.. mais de 3 hras..
                A aplicação Delphi com conexão ADO.. mais ou menos 1 hora e 40 minutos..
                A aplicação Delphi com conexão DbExpress.. mais ou menos 40 minutos..

                Sql*Loader.. demorou mais ou menos 10 minutos.. foi absurda a diferença…

                http://www.orafaq.com/wiki/SQL*Loader_FAQ

                Espero que lhe ajude como me ajudou e tem ajudado……

                Qualquer coisa posta ai que tento realizar algum teste por aqui…para ajudar..!!

                Abraços….

                #85654
                vieri
                Participante

                  consegui realizar da seguinte forma:

                  Ctrl.txt

                  LOAD DATA

                  CHARACTERSET UTF8

                  INFILE ‘teste.txt’

                  CONTINUEIF LAST != “|”

                  INTO TABLE VW_BRIEFING_PROD_BUSCA_1

                  TRUNCATE

                  FIELDS TERMINATED BY ‘;’

                  (COD_PRODUTO_INTERNO ,COD_CARACT_BRIEFING ,NOM_CARACT_BRIEFING,COD_TIPO_VALOR_BRIEFING ,TEXTO_LIVRE CHAR(4000),VALOR_LIVRE , DATA_LIVRE , IND_ATIVO ,NUM_PRIORIDADE_BRIEFING ,COD_PADRAO_MEDIDA ,NOM_PADRAO_MEDIDA,COD_PRODUTO_ORIGEM)

                  Chamada:

                  sqlldr userid=system/q2rtgcv3 control=ctrl.txt

                  insert para tabela definitiva

                  SQL> insert into system.VW_BRIEFING_PROD_BUSCA(COD_PRODUTO_INTERNO,COD_CARACT_BRIEFING,NOM_CARACT_BRIEFING,COD_TIPO_VALOR_BRIEFING,TEXTO_LIVRE,VALOR_LIVRE,

                  2 DATA_LIVRE,IND_ATIVO,NUM_PRIORIDADE_BRIEFING,COD_PADRAO_MEDIDA,NOM_PADRAO_MEDIDA,COD_PRODUTO_ORIGEM)

                  3 select COD_PRODUTO_INTERNO,COD_CARACT_BRIEFING,NOM_CARACT_BRIEFING,COD_TIPO_VALOR_BRIEFING,TEXTO_LIVRE,VALOR_LIVRE,

                  4 data_livre,IND_ATIVO,NUM_PRIORIDADE_BRIEFING,COD_PADRAO_MEDIDA,NOM_PADRAO_MEDIDA,COD_PRODUTO_ORIGEM

                  5 from system.VW_BRIEFING_PROD_BUSCA_1 ;

                  711695 rows created.

                  #85658
                  Avatar photoRegis Araujo
                  Participante

                    Fala Vieri…

                    Entendi.. vc jogou tudo naquela tabela com datatype varchar e depois jogou para uma tabela melhor estruturada neh.. heheh…

                    Eh… esta é uma maneira muito pratica neh e com resultado rápido… Otima ideia..!!

                    Abraços….

                    #85663
                    vieri
                    Participante

                      exatamente isso…

                      tava dando muito conflito, com datatypes pois o txt era oriundo do bpc
                      (SQL SERVER) – windows para oracle – unix.

                      vou ver se jogo de produção desta maneira, pq tabela por tabela é fogo cada uma tem suas particulaaridade nos dados que já não são mto limpos…

                      amanhã vo postar aqui umas dúvidas conceituais que separei pra vc me ajudar se possivel…

                      obs: carreguei a tabela de 1 milhão de linhas em 2 min.

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