Pular para o conteúdo
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #105441
    Avatar de DougDoug
    Participante

      Pessoal, me ajudem…

      Eu preciso utilizar utl_file para ler um arquivo TXT tabulado.

      O que eu nao consigo fazer é ele inserir o campo 1 do txt no campo 1 da tabela, e campo 2 do txt no campo 2 da tabela.

      Alguem tem um modelinho pronto ? Ja fiz as procedures para tratar os campos e tudo mais…so falta essa leitura do txt, que vou inserir os dados em uma table temporaria…depois a proc le essa tabela e gera um outro TXT.

      abs

      #105443
      Avatar de rmanrman
      Participante

        @Doug

        Se a ideia é apenas fazer uma carga você pode utilizar o Sql Loader para isso. Mas se isso for uma solução que será utilizada dentro de um sistema realmente terá que utilizar o utl_file.

        Segue um artigo sobre Sql Loader:

        http://www.fabioprado.net/2010/10/carga … o-sql.html

        #105444
        Avatar de DougDoug
        Participante

          Grande rman…td blz ?

          Sim sera utilizado mais vezes. Tenho realmente que utilizar o utl_file..hehehe…

          Estou fazendo mais testes aqui…mas to apanhando…eu nao consigo fazer com que, qdo ele achar um tab, ele tem q jogar o campo a frente na proxima coluna…

          DECLARE
          arquivo_ler UTL_File.File_Type;
          vs_Linha Varchar2(100);
          vn_row Varchar2(100);

          BEGIN
          arquivo_ler := UTL_File.Fopen('C:Temp', 'safx07.txt', 'r');

          Loop
          UTL_File.Get_Line(arquivo_ler, vs_Linha);

          IF RTRIM(LTRIM(REPLACE(vs_Linha, CHR(9), NULL))) IS NOT NULL THEN
            insert into aoc_safx values (VN_ROW, vs_Linha);
          end if;
          vn_row := vn_row + 1;
          commit;
          

          End Loop;

          UTL_File.Fclose(arquivo_ler);

          EXCEPTION
          WHEN No_data_found THEN
          UTL_File.Fclose(arquivo_ler);
          Commit;
          WHEN UTL_FILE.INVALID_PATH THEN
          Dbms_Output.Put_Line('Diretório inválido.');
          UTL_File.Fclose(arquivo_ler);
          WHEN Others THEN
          Dbms_Output.Put_Line('Problemas na leitura do arquivo.');
          UTL_File.Fclose(arquivo_ler);

          END;

          abs

          #105462
          Avatar de DougDoug
          Participante

            Depois, de tanta dor de cabeça, consegui fazer o utl_file ler a planilha em CSV…so que o consultor me informou so agora que o cliente nao vai liberar o utl_file_dir…hahahah..é brincadeira né….mas faz parte..

            Parti para o loader mesmo….leio o csv, fiz um cursor que le a tabela e gera um txt(utilizando pacotes da aplicação(MASTERSAF)), assim nao preciso gerar nada no servidor de banco.

            OPTIONS (SILENT=ALL, DIRECT=TRUE)
            UNRECOVERABLE LOAD DATA
            INFILE 'CEVA.csv'
            INSERT
            INTO TABLE AOC_SAFX_TEMP
            TRUNCATE
            FIELDS TERMINATED BY ';'
            OPTIONALLY ENCLOSED BY '"'
            (NF,
            EMISSAO,
            SERIE,
            TIPO,
            CFOP,
            CLIENTE,
            VALOR_PROD,
            VALOR_TOTAL,
            BC_ICMS,
            VLR_ICMS,
            BC_ICMSS,
            VLR_ICMSS,
            VLR_IPI,
            CANCELADA,
            PEDIDO_ORIGEM,
            REFERENCIA
            )

            Obrigado …

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