Como convertir data de tabla a archivo de texto

Necesito transformar los datos encontrados en una tabla de oracle en un archivo plano o texto.

1 respuesta

Respuesta
1
Lo puedes hacer de diferentes formas y con diferentes herramientas, la forma más fácil y rápida es mediante una consulta desde SQL*PLUS: (Te recomiendo usar como separador el símbolo "|").
set pagesize 0
set linesize 132
set head off
set feedback off
spool archivo_plano.txt
select col1||'|'||col2||'|'||col3
from tabla
order by col;
spool off
set pagesize 20
set linesize 80
set head on
set feedback on
Hay un Package llamado UTL_FILE, puedes buscar más información si te quieres hacer un experto, pero aquí te mando un ejemplo que funciona, solo adáptalo:
Declare
Cursor c1 is
SELECT CIA||'|'||TRAB||'|'||CEDULA||'|'||NOMBRE1||'|'||
NOMBRE2||'|'||APELLIDO1||'|'||APELLIDO2||'|'||
DIRECCION1||'|'||DIRECCION2||'|'||CIUDAD||'|'||
ESTADO||'|'||PAIS||'|'||SEXO||'|'||
F_NACIMIENTO||'|'||F_INGRESO||'|'||DEP||'|'||
CARGO||'|'||F_RETIRO||'|'||MOTIVO_RETIRO||'|'||
DESC_CIA||'|'||DESC_DEP||'|'||DESC_CARGO||'|'||
DESC_MOTIVO||'|'||null||'|'||null||'|' registro
FROM v_interfaz_firmas@nominaprod
ORDER BY cia, trab;
LINEA VARCHAR2(500);
NOMB_ARCH VARCHAR2(20);
ARCHIVO UTL_FILE.FILE_TYPE;
BEGIN
NOMB_ARCH := 'interfaz_firmas.txt';
ARCHIVO := UTL_FILE.FOPEN('SPP_DBA_INTERFAZ',NOMB_ARCH,'W');
FOR REG in c1 LOOP
LINEA := REG.registro;
UTL_FILE.PUT_LINE(archivo, linea);
END LOOP;
UTL_FILE.FCLOSE(archivo);
END;
/
DELETE FROM spicxp.nmm001_tabla_act@nominaprod;
commit;
exit
Pero como lo hago desde un procedimiento almacenado utilizando pl/sql
Deberías colocar:
UTL_FILE_DIR='c:\prueba', dónde prueba es un directorio existente.
Para probar si está bien el parámetro escribe desde SQL*PLUS logeado como SYSTEM:
show parameter UTL
Si el error continúa, mándame el mensaje completo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas