Necesito transformar los datos encontrados en una tabla de oracle en un archivo plano o texto.
1 respuesta
Respuesta de yalayon
1
1
yalayon, Lugar y fecha de nacimiento : Caracas, Junio 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.