Leitura e Gravação em Arquivo Texto no Oracle

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (6)  (0)

Veja neste artigo procedimentos e exceções do package-padrão UTL_FILE.

Os comandos necessários para o desenvolvimento de rotinas para ler e escrever dados em arquivos do tipo texto encontram-se na package-padrão UTL_FILE, disponível a partir da versão 7.3 do Oracle. Porém sua implementação estará sujeita às permissões do sistema operacional e do banco de dados, sendo que os diretórios que podem ser acessados para leitura e gravação devem ser especificados no parâmetro de inicialização, como UTL_FILE_DIR = nome_do_diretório ou . Observação: especifica que qualquer diretório está acessível para as operações com arquivos.

 Procedimentos da package UTL_FILE

Funcionalidade

FOPEN

abre um arquivo para entrada ou saída, criando um arquivo de saída caso o arquivo especificado não exista

IS_OPEN

indica se determinado arquivo está ou não aberto

FCLOSE

fecha um arquivo

FCLOSE_ALL

fecha todos os arquivos abertos

GET_LINE

lê uma linha de um arquivo aberto

PUT

escreve uma linha no arquivo. Não acrescenta automaticamente o caractere de fim de linha

PUT_LINE

escreve uma linha no arquivo, acrescentando automaticamente o caractere de fim de linha

NEW_LINE

inclui o caractere de fim de linha no arquivo, o que irá gerar uma nova linha em branco

FFLUSH

escreve, fisicamente, todas as pendências para um arquivo

 

Exceções package UTL_FILE

Controle

INVALID_PATH

diretório ou nome de arquivo inválido

INVALID_MODE

o parâmetro de modo de abertura é inválido

INVALID_FILEHANDLE

especificador de arquivo inválido

INVALID_OPERATION

o arquivo não pode ser aberto ou a operação é inválida

READ_ERROR

ocorreu um erro do sistema operacional durante a leitura de um arquivo

WRITE_ERROR

ocorreu um erro do sistema operacional durante a gravação de um arquivo

INTERNAL_ERROR

erro não especificado no PL/SQL

NO_DATA_FOUND

nesse caso, é disparada quando o fim do arquico é encontrado em processamento de leitura seqüencial de um arquivo de texto

Roteiro para geração de arquivo texto

DECLARE 
arquivo_saida
UTL_File.File_Type; Cursor Cur_Linha is <

Definição do select que traz a linha completa concatenada a ser gravada > 
BEGIN arquivo_saida := UTL_File.Fopen('caminho completo’,’ nm arquivo', 'w');   
For Reg_Linha in Cur_linha Loop
UTL_File.Put_Line(arquivo_saida, Reg_linha.linha);
End Loop; 
UTL_File.Fclose(arquivo_saida);   
Dbms_Output.Put_Line('Arquivo gerado com sucesso.');
EXCEPTION
WHEN UTL_FILE.INVALID_OPERATION THEN
Dbms_Output.Put_Line(‘Operação inválida no arquivo.'); 
UTL_File.Fclose(arquivo_saida;)
WHEN UTL_FILE.WRITE_ERROR THEN
Dbms_Output.Put_Line(‘Erro de gravação no arquivo.');
UTL_File.Fclose(arquivo_saida);
WHEN UTL_FILE.INVALID_PATH THEN
Dbms_Output.Put_Line(‘Diretório inválido.');
class=style111>              
UTL_File.Fclose(arquivo_saida);
WHEN UTL_FILE.INVALID_MODE THEN
Dbms_Output.Put_Line(‘Modo de acesso inválido.');
class=style111> 
UTL_File.Fclose(arquivo_saida); 
WHEN Others THEN
class=style111>
Dbms_Output.Put_Line('Problemas na geração do arquivo.');
class=style111>               UTL_File.Fclose(arquivo_saida);
END;

Roteiro para leitura de arquivo texto


DECLARE    
arquivo_ler UTL_File.File_Type;
Linha                               Varchar2(100);
BEGIN   
arquivo_ler  := UTL_File.Fopen('caminho completo’,’nm arquivo', 'r');
Loop
UTL_File.Get_Line(arquivo_ler, Linha);                        
<Manipulação da linha lida>
End Loop;
UTL_File.Fclose(arquivo_ler);
Dbms_Output.Put_Line('Arquivo processado com sucesso.');
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;

Aprenda mais sobre SQL

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?