Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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); 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
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 ModelUTL_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