jueves, 26 de febrero de 2015

Paquete UTL_FILE

UTL_FILE es un paquete incorporado en Oracle que se puede utilizar para operaciones con archivo de texto ubicados dentro de un directorio. El directorio puede existir ya sea en el servidor o en la máquina del cliente.Los archivos accedidos por UTL_FILE son archivos de texto claros y no archivos binarios, debido a su incapacidad para manejar los caracteres especiales.



UTL_FILE no puede acceder directamente a cualquiera de los archivos que se encuentran en los sistemas operativos, para esto debe hacerse la lectura por  de directorios de bases de datos. El DBA crea el directorio de servidor para el archivo, en el que el usuario debe tener acceso de lectura y escritura antes de utilizarlo en la operación UTL_FILE.

Si el archivo de destino esta ubicado en el servidor, UTL_FILE no tiene restricciones de acceso. Pero si la ubicación del archivo esta en una máquina cliente, UTL_FILE sólo tiene acceso a esos lugares, que son compartidos y accesibles desde el servidor.

Directorios de bases de datos
Como se dijo anteriormente, los directorios de bases de datos son objetos del lado del servidor que apuntan a una ubicación específica en un sistema. La ubicación puede ser en el servidor de base de datos o en la máquina cliente. Por defecto, sólo SYSDBA goza del privilegio CREATE ANY DIRECTORY, por lo que sólo un DBA puede crear el directorio bajo petición. El usuario, que está usando el directorio, debe tener acceso de lectura / escritura en él. Compruebe la sintaxis siguiente para crear el directorio Si la ubicación es en el sistema operativo del servidor, el directorio tiene que ser creado por la vía real.

CREATE DIRECTORY DIR_ITEMS AS '/usr/tmp';

Las funciones mas conocidas del paquete ULT_FILE son:

UTL_FILE.FOPEN()
La función abre un archivo desde el directorio del parámetro location en el modo open_mode  y se identifica el nombre del archivo filename. Los modos para abrir pueden ser :
R para leer el texto
W para escribir texto
A para añadir texto
RB para leer en modo bytes
WB para escribir en modo bytes
AB para el modo de añadir byte s

El último parámetro max_linesize es la longitud máxima de los caracteres en una línea del archivo. El valor se encuentra en el rango de 1para 32767. Por defecto, su valor es de 1024.

UTL_FILE.FOPEN (
location IN VARCHAR2,
filename IN VARCHAR2,
open_mode IN VARCHAR2,
max_linesize IN BINARY_INTEGER)
RETURN file_type;

UTL_FILE.PUT()
El procedimiento escribe un texto en el archivo, que está bajo la operación de escritura. Tenga en cuenta que se tiene capacidad para escribir sólo una parte del texto en el archivo, pero no cambia la línea. En realidad, se escribe el texto en el búfer de archivo, que puede contener máximo de 32767 bytes.

UTL_FILE.PUT (
FILE IN FILE_TYPE,
buffer IN VARCHAR2);

UTL_FILE.GET_LINE()
El procedimiento devuelve un texto contenida por el archivo. El archivo, en modo de lectura, permite una línea de texto que se leerá y se asigna al parámetro buffer. LEN especifica los caracteres de la línea que se deben leer cada intento. Si es nulo, entonces el procedimiento lee la línea hasta la línea se termina, siempre que la longitud es menor que la max_linesize.

UTL_FILE.GET_LINE (
FILE IN FILE_TYPE,
buffer OUT VARCHAR2,
len IN PLS_INTEGER DEFAULT NULL);

UTL_FILE.FCLOSE()
El procedimiento cierra un archivo, que se apertura  para su lectura o escritura.

UTL_FILE.FCLOSE (FILE IN OUT FILE_TYPE);

No hay comentarios:

Publicar un comentario