Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lucia.Souza

Carregar arquivo txt em tabela no Oracle

Recommended Posts

Olá

 

Preciso carregar um arquivo txt de 10 GB em uma tabela no Oracle. Eu uso o SQL Developer.

 

Pesquisei sobre o assunto e vi que SQL Loader faz isso, porém não encontrei para baixar.

 

 

Pergunta: Consigo usar o SQL Loader com o SQL Developer ??

Alguém sabe como posso baixar? Tem um link que eu consiga fazer isso?

 

 

Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://docs.oracle.com/cd/B19306_01/server.102/b14215/part_ldr.htm

 

O Loader é nativo por assim dizer.

Para facilitar depende um pouco do formato do arquivo.

A documentação é ampla e existem exemplos a rodo.

Tenha apenas cuidados com o audit numa carga grandinha assim.

O destino écapenas uma tabela ?

Será feita uma vez só não ?


Só uma questão, pessoalmente prefiro fazer um bloco plsql ou procedure apenas porque em muitos casos os dados que vem no arquivo precisam ser validados, string onde devia ter número, data inválida etc, mas o loader funciona e bem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde hoje tenho a seguinte procedure para fazer carga aqui de dois txt

natar e nacar

 

Voce tem que salvar o arquivo dentro do banco

dir varchar2(35):= '/oradb/tmp'; e onde eu vo salvar o txt para o banco vir e ler ele


CREATE OR REPLACE 
PROCEDURE xxx_carga_prc IS
DECLARE
    ftarquivo_file utl_file.file_type;                      -- armazena todo o arquio texte

    sdir          varchar2(35):= '/oradb/tmp';              -- diretório FTP esse é o nome do DBLink que foi criado pelo DBA 
    smsg          varchar2(32767);
    dDt_corrent   date;                                     -- data corrente

    CURSOR r1 IS 
    SELECT 'NATAR_1.TXT' arq
      FROM dual
      UNION 
    SELECT 'NACAR_21.TXT' arq
      FROM dual;                   

begin -- inicio prcedure
    FOR x1 IN r1 LOOP
        dbms_output.put_line('x1.arq:'||x1.arq);
        snm_arquivo := x1.arq;
        begin -- Abrindo o arquivo TXT
              ftarquivo_file := utl_file.fopen(sdir,snm_arquivo,'r');

            exception
                when others then
                    raise_application_error(-20001,'erro na abertura do arquivo '|| sqlerrm ||' !!');
        end;

        begin -- lendo o cabeçalho apaenas pra verificar se está lendo corretamente
            utl_file.get_line(ftarquivo_file,v_linha);
         exception
             when others then
                raise_application_error(-20002,'erro na leitura da linha do cabeçalho !!'||sqlerrm);
        end;
        loop -- Lógica que le a linha do arquivo TXT que corresponde a data corrente
           ncontador := ncontador + 1;
           utl_file.get_line(ftarquivo_file, v_linha);

           if ncontador < to_number(to_char(pData, 'dd')) then
                continue;
           end if;
        
        -- recuperando os elementos climaticos cortando a linha do arquivo TXT   
         
        dbms_output.put_line('ncontador:'||ncontador);                                                                                                               
           if ncontador = to_number(to_char(pData, 'dd')) THEN
            dbms_output.put_line('v_linha:'||v_linha); 

             schuva    := replace(trim(substr(v_linha, 50, 5)),'.',',');
             stemp_med := replace(trim(substr(v_linha, 3, 6)),'.',',');
             stemp_mim := replace(trim(substr(v_linha, 23, 6)),'.',',');
             stemp_max := replace(trim(substr(v_linha, 9, 6)),'.',',');

             exit;
          end if;
       end loop;
        dbms_output.put_line('snm_arquivo:'||snm_arquivo);
        -- recuperando a instancia e o código do posto metereológico pelo nome do arquivo
        begin
            if substr(snm_arquivo, 1, 5) = 'NATAR' then
                  sInstancia := 'NATAR';
                  nposto     := to_number(substr(snm_arquivo, 7, 1)); -- TARUMÃ 1
                  

            elsif substr(snm_arquivo, 1, 5) = 'NACAR' then -- CAARAPO 21
                  sInstancia := 'NACAR';
                  nposto     := to_number(substr(snm_arquivo, 7, 2));
                 
            end if;
        end;

    END LOOP;
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.