- Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 12 anos, 6 meses atrás por
Doug.
-
AutorPosts
-
23 de maio de 2013 às 10:15 pm #105441
Doug
ParticipantePessoal, me ajudem…
Eu preciso utilizar utl_file para ler um arquivo TXT tabulado.
O que eu nao consigo fazer é ele inserir o campo 1 do txt no campo 1 da tabela, e campo 2 do txt no campo 2 da tabela.
Alguem tem um modelinho pronto ? Ja fiz as procedures para tratar os campos e tudo mais…so falta essa leitura do txt, que vou inserir os dados em uma table temporaria…depois a proc le essa tabela e gera um outro TXT.
abs
23 de maio de 2013 às 11:15 pm #105443rman
Participante@Doug
Se a ideia é apenas fazer uma carga você pode utilizar o Sql Loader para isso. Mas se isso for uma solução que será utilizada dentro de um sistema realmente terá que utilizar o utl_file.
Segue um artigo sobre Sql Loader:
http://www.fabioprado.net/2010/10/carga … o-sql.html
24 de maio de 2013 às 12:04 am #105444Doug
ParticipanteGrande rman…td blz ?
Sim sera utilizado mais vezes. Tenho realmente que utilizar o utl_file..hehehe…
Estou fazendo mais testes aqui…mas to apanhando…eu nao consigo fazer com que, qdo ele achar um tab, ele tem q jogar o campo a frente na proxima coluna…
DECLARE
arquivo_ler UTL_File.File_Type;
vs_Linha Varchar2(100);
vn_row Varchar2(100);BEGIN
arquivo_ler := UTL_File.Fopen('C:Temp', 'safx07.txt', 'r');Loop
UTL_File.Get_Line(arquivo_ler, vs_Linha);IF RTRIM(LTRIM(REPLACE(vs_Linha, CHR(9), NULL))) IS NOT NULL THEN insert into aoc_safx values (VN_ROW, vs_Linha); end if; vn_row := vn_row + 1; commit;End Loop;
UTL_File.Fclose(arquivo_ler);
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;
abs
28 de maio de 2013 às 5:13 pm #105462Doug
ParticipanteDepois, de tanta dor de cabeça, consegui fazer o utl_file ler a planilha em CSV…so que o consultor me informou so agora que o cliente nao vai liberar o utl_file_dir…hahahah..é brincadeira né….mas faz parte..
Parti para o loader mesmo….leio o csv, fiz um cursor que le a tabela e gera um txt(utilizando pacotes da aplicação(MASTERSAF)), assim nao preciso gerar nada no servidor de banco.
OPTIONS (SILENT=ALL, DIRECT=TRUE)
UNRECOVERABLE LOAD DATA
INFILE 'CEVA.csv'
INSERT
INTO TABLE AOC_SAFX_TEMP
TRUNCATE
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
(NF,
EMISSAO,
SERIE,
TIPO,
CFOP,
CLIENTE,
VALOR_PROD,
VALOR_TOTAL,
BC_ICMS,
VLR_ICMS,
BC_ICMSS,
VLR_ICMSS,
VLR_IPI,
CANCELADA,
PEDIDO_ORIGEM,
REFERENCIA
)Obrigado …
-
AutorPosts
- Você deve fazer login para responder a este tópico.