Ler aquivo .txt e gravar no banco de dados.
-
- Rank: DBA Júnior
- Mensagens: 223
- Registrado em: Qui, 14 Dez 2006 10:45 am
- Localização: Brasília-DF
Cleber Zumba de Souza
Pessoal alguém tem um script ou uma procedure que lê arquivo .txt no diretório de grava no banco de dados?
-
- Moderador
- Mensagens: 1177
- Registrado em: Qui, 15 Out 2009 10:28 am
- Localização: Recife
Retirei de um post aqui do forum,
Para funcionar você tem que ter o parametro UTL_FILE_DIR setado,
veja como esta com
precisa criar um directory no banco e dar permissoes de leitura para o usuiario que vai rodar o script,
Para funcionar você tem que ter o parametro UTL_FILE_DIR setado,
veja como esta com
select value from v$parameter where name like '%utl%';
declare
vLinha Varchar2(2000);
uArquivo Utl_File.File_Type;
Begin
--------------------------
-- Define no do Arquivo --
--------------------------
Begin
-----------------------
--- Abre arquivo txt --
-----------------------
uArquivo := Utl_File.FOpen(P_Nome_Local , P_Nome_Arq , 'r');
---------------------------------
-- Loop para Ler o Arquivo Txt --
---------------------------------
Loop
Begin
Utl_File.Get_Line(uArquivo , vLinha);
Insert Into Tabela
( Coluna01 -- 01
, Coluna02 -- 02
)
Values
( Substr( vLinha , 1,20 )
, Substr( vLinha ,21,20 )
);
Exception
-- reached the end of file
When No_Data_Found Then
Exit;
-- line to long to store in buffer
When Value_Error Then
Raise_Application_Error(-20214, 'Value_Error '||sqlerrm);
-- not a valid file handle
When Utl_File.Invalid_FileHandle Then
Raise_Application_Error(-20215, 'Invalid_filehandle '||sqlerrm);
-- file is not open for reading
When Utl_File.Invalid_Operation Then
Raise_Application_Error(-20216, 'invalid_operation '||sqlerrm);
-- OS error occurred during read
When Utl_File.Read_Error Then
Raise_Application_Error(-20217, 'Read_Error '||sqlerrm);
End;
End Loop;
Utl_File.FClose(uArquivo);
-
- Rank: DBA Júnior
- Mensagens: 223
- Registrado em: Qui, 14 Dez 2006 10:45 am
- Localização: Brasília-DF
Cleber Zumba de Souza
Brother.
os parametros P_Nome_Local e P_Nome_Arq eles tem que estar fixo no código, certo?
os parametros P_Nome_Local e P_Nome_Arq eles tem que estar fixo no código, certo?
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:
pode ser algo do tipo
ou então você pode definir como parametro de entrada da sua procedure e quando chamara passar somente o valor
P_Nome_Local VARCHAR2(1024) := '/u01/oracle/admin/SID/udump';
-
- Rank: DBA Júnior
- Mensagens: 223
- Registrado em: Qui, 14 Dez 2006 10:45 am
- Localização: Brasília-DF
Cleber Zumba de Souza
e o nome do arquivo?...ele muda a cada mês. essa leitura é mensal e vem com a data do dia.
ex:
como faço?
ex:
arq_bb_30_10_09
arq_bb_30_11_09
como faço?
-
- Rank: DBA Júnior
- Mensagens: 223
- Registrado em: Qui, 14 Dez 2006 10:45 am
- Localização: Brasília-DF
Cleber Zumba de Souza
aqui nesse comando:
os parametros uArquivo e vLinha recebe o que? de onde?
Utl_File.Get_Line(uArquivo , vLinha);
-
- Moderador
- Mensagens: 1177
- Registrado em: Qui, 15 Out 2009 10:28 am
- Localização: Recife
uArquivo é o arquivo que você abriu em modo R (read),
o vLinha é cada volta do Loop pegando a linha atual do arquivo, o que você deve tratar, o conteudo do arquivo propriamente dito,
o vLinha é cada volta do Loop pegando a linha atual do arquivo, o que você deve tratar, o conteudo do arquivo propriamente dito,
nome do arquivo := 'arq_bb'||to_char(sua_data, 'dd')||'_'||to_char(sua_data, 'mm')||'_'||to_char(sua_data, 'rr');
-
- Moderador
- Mensagens: 367
- Registrado em: Ter, 25 Mar 2008 3:41 pm
- Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
O topico foi trancado por que o dono do mesmo já criou outro.
http://glufke.net/oracle/viewtopic.php?t=5460
http://glufke.net/oracle/viewtopic.php?t=5460
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes