Fórum Lendo linha de um arquivo formatado e trnasformando em Colunas #478931
14/05/2014
0
Varias vezes topamos com arquivos formatados e temos de processa-los para gravarmos a informação no nosso sistema, e por necessidade de tornar mais rápido e generico construir essa rotina e espero que ajude. Qualquer comentário e melhoramento será bem vindo.
-- Considerando que eu tenha uma linha :
-- Linha varchar2(1000):='|12|MARIA HOSER DE ALMEIDA|54000000|RUA EMBAIXADOR|1233|RECIFE|PE|BRASIL|12323445432|ISENTO|';
-- Preciso Ler a Linha como Coluna
-- Separador = Separa CHAR(1):='|';
-- Executo o loop lendo cada campo como se fosse uma linha
for i in (select Rownum Numero,
SUBSTR(A.Str||Separa,
INSTR(A.Str||Separa , Separa, 1, Rownum ) + 1,
INSTR(A.Str||Separa , Separa, 1, Rownum+1) -
INSTR(A.Str||Separa , Separa, 1, Rownum ) - 1) Campo
from (select Linha Str
from dual) A,
all_objects B
where rownum < length(A.Str) - length(REPLACE(A.Str,Separa)) + 1)
loop
-- Salva o Nome do Cliente
if (i.Numero = 2) then
vNomeCliente:=TRIM(i.Campo);
end if;
-- Salva a Rua do Cliente
if (i.Numero = 4) then
vEndereco:=TRIM(i.Campo);
end if;
-- Salva o Numero do Endereço
if (i.Numero = 5) then
vNumero:=TO_NUMBER(TRIM(i.Campo));
end if;
-- Salva a Uf
if (i.Numero = 7) then
vUf:=TRIM(i.Campo);
end if;
-- Salva Inscrição Estadual e Grava Registro
if (i.Numero = 10) then
vInscEst:=TRIM(i.Campo);
Grava_Tabela(vNomeCliente, vEndereco, vNumero, vUf, vInscEst);
end if;
end loop;
Lourival Queiroz
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)