TEXT_IO package
Publicado por Alexandra (17 intervenciones) el 19/07/2001 17:01:27
Hola
Quisiera saber como puedo hacer para leer archivos csv y cargarlos a la Base de Datos usando el TEXT_IO package. Lo que tengo hasta el momento es:
DECLARE
IN_FILE TEXT_IO.FILE_TYPE;
OUT_FILE TEXT_IO.FILE_TYPE;
v_id ERROR.ERRO_ID%type;
v_descripcion ERROR.ERRO_DESCRIPC%TYPE;
v_linea varchar2(500);
existe number;
BEGIN
in_file := Text_IO.Fopen('c:\ejemplo.csv','R');
IF Text_IO.Is_Open(in_file) THEN
loop
TEXT_IO.GET_LINE(IN_FILE,V_LINEA);
v_id := TO_NUMBER(SUBSTR(V_LINEA,1,instr
(V_LINEA,',')-1));
v_descripcion := UPPER(RTRIM(SUBSTR(V_LINEA,instr
(V_LINEA,',')+1,50)));
select count(*) into existe from ERROR
where ERRO_ID = v_id;
IF existe > 0 THEN
UPDATE ERROR set ERRO_DESCRIPC=v_descripcion
where ERRO_ID = v_id;
ELSE
INSERT INTO ERROR(ERRO_ID,ERRO_DESCRIPC)
VALUES(v_id,v_descripcion);
END IF;
END LOOP;
END IF;
END;
Pero me sale un error al acabar de leer todos los registros: ORA 01403 Creo que me falta la condición de que cuando acabe el archivo salga del LOOP pero no se como hacer eso. Por favor ayudenme.
Gracias
Quisiera saber como puedo hacer para leer archivos csv y cargarlos a la Base de Datos usando el TEXT_IO package. Lo que tengo hasta el momento es:
DECLARE
IN_FILE TEXT_IO.FILE_TYPE;
OUT_FILE TEXT_IO.FILE_TYPE;
v_id ERROR.ERRO_ID%type;
v_descripcion ERROR.ERRO_DESCRIPC%TYPE;
v_linea varchar2(500);
existe number;
BEGIN
in_file := Text_IO.Fopen('c:\ejemplo.csv','R');
IF Text_IO.Is_Open(in_file) THEN
loop
TEXT_IO.GET_LINE(IN_FILE,V_LINEA);
v_id := TO_NUMBER(SUBSTR(V_LINEA,1,instr
(V_LINEA,',')-1));
v_descripcion := UPPER(RTRIM(SUBSTR(V_LINEA,instr
(V_LINEA,',')+1,50)));
select count(*) into existe from ERROR
where ERRO_ID = v_id;
IF existe > 0 THEN
UPDATE ERROR set ERRO_DESCRIPC=v_descripcion
where ERRO_ID = v_id;
ELSE
INSERT INTO ERROR(ERRO_ID,ERRO_DESCRIPC)
VALUES(v_id,v_descripcion);
END IF;
END LOOP;
END IF;
END;
Pero me sale un error al acabar de leer todos los registros: ORA 01403 Creo que me falta la condición de que cuando acabe el archivo salga del LOOP pero no se como hacer eso. Por favor ayudenme.
Gracias
Valora esta pregunta


0