Realizar Lectura / Escritura de ficheros en PL/SQL
Buenas a todos,
Estoy preparándome para desarrollar con PL/SQL y estoy viendo el tema de como tratar ficheros y he estado viendo en internet que existe un paquete denominado UTL_FILE que es el que permite tanto leer como escribir en fichero. El único problema que veo es que hay que parametrizar una variable en el INIT.ORA, la utl_file_dir creo que es. La pregunta es la siguiente: ¿ESTA ES LA UNICA POSIBILIDAD DE TRATAR FICHEROS BAJO PL/SQL, O EXISTE ALGUN OTRO PAQUETE PARA HACERLO? Ojo, el tratamiento de ficheros lo quiero realizar exclusivamente con mandatos PL/SQL, no con ninguna herramienta externa.
Muchas Gracias de antemano ...
Saludos
Estoy preparándome para desarrollar con PL/SQL y estoy viendo el tema de como tratar ficheros y he estado viendo en internet que existe un paquete denominado UTL_FILE que es el que permite tanto leer como escribir en fichero. El único problema que veo es que hay que parametrizar una variable en el INIT.ORA, la utl_file_dir creo que es. La pregunta es la siguiente: ¿ESTA ES LA UNICA POSIBILIDAD DE TRATAR FICHEROS BAJO PL/SQL, O EXISTE ALGUN OTRO PAQUETE PARA HACERLO? Ojo, el tratamiento de ficheros lo quiero realizar exclusivamente con mandatos PL/SQL, no con ninguna herramienta externa.
Muchas Gracias de antemano ...
Saludos
Que yo sepa es la única posibilidad. Pero funciona muy bien.
El parámetro del init.ora efectivamente es el utl_file_dir. Que se define así:
Si quieres restringirlo a un directorio, por ejemplo, /tmp:
utl_file_dir=/tmp
Si no quieres realizar restricciones, y que se pueda acceder a cualquier directorio:
utl_file_dir=*
El parámetro del init.ora efectivamente es el utl_file_dir. Que se define así:
Si quieres restringirlo a un directorio, por ejemplo, /tmp:
utl_file_dir=/tmp
Si no quieres realizar restricciones, y que se pueda acceder a cualquier directorio:
utl_file_dir=*
Gracias por aclararme esa duda, pero tengo otra pregunta:
El parámetro utl_file_dir se puede poner en cualquier punto del INIT.ORA, o es necesario ponerlo en algún sitio especial?
Muchas Gracias de nuevo.
Saludos
Toni
El parámetro utl_file_dir se puede poner en cualquier punto del INIT.ORA, o es necesario ponerlo en algún sitio especial?
Muchas Gracias de nuevo.
Saludos
Toni
No importa donde lo pongas,... ponlo al final si quieres.
Pero ten en cuenta, que para que te coja los parámetros del init.ora debes rearrancar la base de datos.
Pero ten en cuenta, que para que te coja los parámetros del init.ora debes rearrancar la base de datos.
Si no quieres tener que reiniciar la base de datos para que lea del init.ora el utl_file_dir tambien puedes hacerlo creandote un directorio mediante esta orden con el usuario sys:
CREATE OR REPLACE DIRECTORY EXPORTS AS '/opt/oracle/utl_file_temp';
GRANT READ ON DIRECTORY EXPORTS TO TIBCOADM;
La primera sentencia crea el directorio donde vas a escribir o leer. La segunda da permiso al usuario que va ha utilizar ese directorio.
Para usarlo haz esto.
fHandle := UTL_FILE.FOPEN('EXPORTS','tibco_dwh.txt','A');
Lo bueno de esto es que es en caliente y no hace falta reiniciar la bd.
Un saludo
CREATE OR REPLACE DIRECTORY EXPORTS AS '/opt/oracle/utl_file_temp';
GRANT READ ON DIRECTORY EXPORTS TO TIBCOADM;
La primera sentencia crea el directorio donde vas a escribir o leer. La segunda da permiso al usuario que va ha utilizar ese directorio.
Para usarlo haz esto.
fHandle := UTL_FILE.FOPEN('EXPORTS','tibco_dwh.txt','A');
Lo bueno de esto es que es en caliente y no hace falta reiniciar la bd.
Un saludo
