Ir para conteúdo

POWERED BY:

Arquivado

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

LucianoAOl

Leitura de Arquivo com UTLFILE

Recommended Posts

Olá bom dia.

 

Estou tentando utilizar o recurso de utl file para ler um arquivo txt e importar os dados para uma tabela no Oracle.

Já li em vários fóruns e já pesquisei muito em documentação oracle e site na internet mas não consigo encontrar a resposta para o problema.

 

O fonte segue abaixo:

 

 

set serveroutput on

DECLARE
arquivo_ler UTL_File.File_Type;
Linha Varchar2(1000);
BEGIN
arquivo_ler := UTL_FILE.FOPEN('INTRANET_LOAD','carga_intranet.txt', 'R',32767);
Loop
  UTL_File.Get_Line(arquivo_ler, Linha);
  dbms_output.put_line(Linha);
End Loop;
UTL_File.Fclose(arquivo_ler);
Dbms_Output.Put_Line('Arquivo processado com sucesso.ULAULA');
END;
/

 

 

Os erros:

 

ORA-29283: operação de arquivo inválida

ORA-06512: em "SYS.UTL_FILE", line 633

ORA-29283: operação de arquivo inválida

ORA-06512: em line 5

 

 

O que já foi feito:

Criado o DIRECTORY(INTRANET_LOAD) e dado os GRANT de read, write para o usuário

No Linux, onde o Oracle está instalado, foi dado acesso total ao usuário Oracle na pasta: /u01/app/oracle/product/11.2.0/db_1/adp

 

 

Ao escrever a consulta;

 

SELECT *
FROM all_tab_privs
WHERE table_name = 'INTRANET_LOAD';

 

 

 

Grato por qualquer ajuda.

 

Luciano

 

Os dados retornados são.

 

 

1    SIGA    INTRANET    SYS    INTRANET_LOAD    READ    NO    NO
2    SIGA    INTRANET    SYS    INTRANET_LOAD    WRITE    NO    NO

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece certo, qual a versão do Oracle ? As antigas exigiam um diretório específico (utl_file).

Acho que o user tem de grant na package, mas não estou certo.

 

Security Model

UTL_FILE is available for both client-side and server-side PL/SQL. Both the client (text I/O) and server implementations are subject to server-side file system permission checking.

In the past, accessible directories for the UTL_FILE functions were specified in the initialization file using the UTL_FILE_DIR parameter. However, UTL_FILE_DIR access is not recommended. It is recommended that you use the CREATE DIRECTORY feature, which replaces UTL_FILE_DIR. Directory objects offer more flexibility and granular control to the UTL_FILE application administrator, can be maintained dynamically (that is, without shutting down the database), and are consistent with other Oracle tools. CREATE DIRECTORY privilege is granted only to SYS and SYSTEM by default.

 

Fonte

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.