4
2010
UTL_FILE | Trabajo con ficheros
A traves de este paquete “UTL_FILE” podemos trabajar con ficheros en Oracle.
Primero crearemos el directorio para trabajar. Tenéis que tener permisos para hacerlo:
create or replace directory DIR_TEST as â€/usuarios/prueba’;
Si queréis borrarlo:
drop directory DIR_TEST;
Con esta select podréis ver todos los directorios creados:
select * from dba_directories;
OPERATIVA
Para trabajar con ficheros, es básico conocer la operativa de las dos operaciones más normalmente usadas.
ESCRITURA
1.    Declarar el descriptor
2.    Abrir el fichero con FOPEN de modo escritura
3.    Escribir los datos usando PUT, FPUT o PUT_LINE.
4.    Cerrar fichero FCLOSE
LECTURA
1.    Declarar el descriptor
2.    Declarar variable para almacenar datos
3.    Abrir el fichero con FOPEN de modo lectura.
4.    Leer datos con GET_LINE
5.    Cerrar fichero FCLOSE
FUNCIONES
1.   UTL_FILE.OPEN
· Se utiliza para abrir un fichero en modo determinado.
· Si es todo es correcto, devuelve un DESCRIPTOR diferente de NULL.
· Sintaxis:
Descriptor utl_file.file_type;
Descriptor := UTL_FILE.FOPEN (â€Path’,’Nombre_Fichero’,’modo’);
El Descriptor debe ser una variable de tipo UTL_FILE.FILE_TYPE previamente declarada.
PATH + Nombre Fichero. El Path debe existir.
· Modo.
     R: Lectura
     W: Lectura y escritura en modo reemplazar. Si el fichero existe lo borra, sino lo crea
     A: Lectura y escritura en modo añadir. Si el fichero no existe ? INVALID_OPERATION.
declare
descriptor utl_file.file_type;
fichero_cont varchar2(100);
begin
 descriptor := utl_file.fopen(’DIR_TEST’,’fichero_oracle.txt’,’w’);
 fichero_cont := â€Creando el nuevo fichero â€;
 utl_file.put_line(descriptor,fichero_cont);
 utl_file.fclose(descriptor);
end;
/
2. UTL_FILE.IS_OPEN
Devuelve TRUE si el descriptor de fichero está aún abierto.
Sintaxis:
auxiliar Boolean;
auxiliar := UTL_FILE.IS_OPEN(Descriptor);
3. UTL_FILE.GET_LINE
Lee una lÃnea de DATOS del fichero especificado.
Se necesita una variable de salida (buffer_salida) lo suficientemente largo para almacenar todos los datos hasta el retorno de carro ( no incluido en buffer).
Sintaxis:
buffer_salida varchar2(2000); !! Tiene que ser mayor que cualquier lÃnea de nuestro fichero.
UTL_FILE.GET_LINE(â€Descriptor’,buffer_salida);Â
4. UTL_FILE.FCLOSE/FCLOSE_ALL
Se utiliza para el fichero abierto y asignado a ese descriptor.
Con FCLOSE_ALL se cierran todos los ficheros que estén en ese momento abiertos.
Si un programa acaba y existen ficheros abiertos, puede afectar al contenido de estos archivos.
Sintaxis:
UTL_FILE.FCLOSE(â€Descriptor’);
UTL_FILE.FCLOSE_ALL;
declare
descriptor utl_file.file_type;
salida varchar2(100);
fichero_cont varchar2(100);
auxiliar Boolean;
begin
      descriptor := utl_file.fopen(’DIR_TEST’,’fichero_oracle.txt’,’r’);
      utl_file.get_line(descriptor,salida);
      dbms_output.put_line(’ Contenido del fichero: †|| salida);
      auxiliar := UTL_FILE.IS_OPEN(descriptor);
      if auxiliar = TRUE then
        dbms_output.put_line(’ El fichero esta abierto â€);
      else
        dbms_output.put_line(’ El fichero esta cerrado â€);
      end if;
      UTL_FILE.FCLOSE(descriptor); /* Para cerrar el fichero */
end;
/Devolverá:
Contenido del fichero: Añadiendo al nuevo fichero
El fichero esta abierto
Â
NO SE PUEDE LEER Y ESCRIBIR EN EL MISMO FICHERO A LA VEZ.
5. UTL_FILE.PUT
Se utiliza para escribir datos en un fichero.
Los datos se añaden a continuación de donde están situados.
No se añade el “ fin de lÃnea “. Lo escribe a continuación de la última lÃnea.
Sintaxis:
UTL_FILE.PUT(â€Descriptor’,buffer);
6. UTL_FILE.NEW_LINE
Se utiliza para añadir 1 o más saltos de lÃnea al fichero.
Si el número pasado el menos o igual a cero no ocurre nada.
Sintaxis:
UTL_FILE.NEW_LINE(â€Descriptor’,’Numero lineas’);
7. UTL_FILE.PUT_LINE
Se utiliza para escribir datos (caracteres, fechas, números en un fichero, añadiendo al final un salto de lÃnea.
Los datos se añaden a continuación de donde están situados.
Sintaxis:
UTL_FILE.PUT_LINE(â€Descriptor’,buffer);
8. UTL_FILE.PUTF
Se utiliza para escribir datos en un fichero con un formato determinado.
Los operador utilizados son idénticos a los utilizados en el lenguaje C (%s, n…);
Sintaxis:
UTL_FILE.PUTF (â€Descriptor, formato, arg1, arg2,…);
9. UTL_FILE.FFLUSH
Se utiliza para escribir fÃsicamente todos los datos pendientes de escritura
Todas las operaciones de escritura se hacen a través de buffers intermedios para rapidez del sistema.
Sintaxis:
UTL_FILE.FFLUSH(â€Descriptor’);
declare
descriptor utl_file.file_type;
datos_put varchar2(100);
datos_put_line varchar2(100);
auxiliar Boolean;
begin
descriptor := utl_file.fopen(’DIR_TEST’,’fichero_oracle.txt’,’w’);
  loop
      datos_put := â€Esto es con el put’;
      utl_file.put(descriptor,datos_put);  – Lo escribe todo seguido
      datos_put := â€Continuacion del put’;
      utl_file.put(descriptor,datos_put);
      datos_put_line := â€Â Esto es put_line’;
      utl_file.put_line(descriptor,datos_put_line);Â
      utl_file.new_line(descriptor,2);
      datos_put_line := †Continuanos con el put_line’;
      utl_file.put_line(descriptor,datos_put_line);
   utl_file.fclose(descriptor);
   exit;
  end loop;
end;
/
FUNCIONES NUEVAS A PARTIR DE ORACLE 10g
- FCOPY. Copiar parte de un fichero a otro:
BEGIN
UTL_FILE.FCOPY (’C:Ficheros’,’datos.txt’,
              â€C:Ficheros’,’copia_datos.txt’,1,5); — Es por lÃnea, si quiero que copie todo elimino los parámetros. El fichero segundo no hace falta que exista y si existe lo reemplaza
end;
/
-Â FREMOVE. Borrar un fichero:
Si el último parámetro es TRUE y el fichero existe sobreescribe el fichero e ignora el error. Si existe y es FALSE da error. Si no existe no da error en ningún caso
BEGIN
 UTL_FILE.FREMOVE(’C:Ficheros’,’prueba.txt’);
END;
/
- FRENAME. Renombrar un fichero:
BEGIN
 UTL_FILE.FRENAME(’C:Ficheros’,’datos.txt’,’C:Ficheros’,’nuevos_datos.txt’,false);
END;
/
- FGETPOS. Devuelve la posición en bytes donde nos encontramos:
DECLARE
v_datos varchar2(2000);
GET_POS NUMBER;
descriptor utl_file.file_type;
BEGIN
descriptor := utl_file.fopen(’c:ficheros’,'datos.txt’,'r’);
 — No hemos hecho nada : devuelve 0
 GET_POS := UTL_FILE.FGETPOS (descriptor);
 dbms_output.put_line(get_pos);
 –Leemos una lÃnea
 utl_file.get_line(descriptor,v_datos);
 GET_POS := UTL_FILE.FGETPOS (descriptor);
 dbms_output.put_line(get_pos);
utl_file.fclose(descriptor);
end;
/
- Función FSEEK. Sirve para posicionarnos en un byte determinado:
DECLARE
v_datos varchar2(2000);
descriptor utl_file.file_type;
BEGIN
descriptor := utl_file.fopen(’c:ficheros’,'datos.txt’,'r’);
 –Nos posicionamos en el byte 16
 utl_file.fseek(descriptor,16);
Â
 – Leemos la lÃnea
 utl_file.get_line(descriptor,v_datos);
 dbms_output.put_line(v_datos);
utl_file.fclose(descriptor);
end;
/
Han llegado aquà buscando:Ningún usuario a búscado algo parecido en nuestra website
Related Posts
3 Comments + Add Comment
Leave a comment
Encuéntralo aquÃ
Ayudas!
Entradas recientes
- Configurar Opencart para mostrar precios con impuestos
- 8 consejos para un buen SEO en las redes sociales
- Etiquetas BBcode
- Tubemate, una aplicación gratuita y muy útil para bajar vÃdeos
- Solucion Password perdido en Opencart
- Mejorar la velocidad de Opencart y vQmod
- Funciones Opencart | Configuracion y Moneda
- MomentCam, divertida aplicación para crear caricaturas con nuestro Smartphone
- Funciones Opencart | Cache y Cesta cliente
- Funciones Opencart | Afiliados
- Photoshop y el retoque fotográfico: La importancia de la imagen en nuestras vidas.
- Mejorar la velocidad en Opencart
- SEO Opencart | Url de la página principal
- Autopublicar en el muro de facebook de tus amigos
- Comprimir web desde cpanel
- Imagen en categorÃas Opencart
- Automatizar keywords Opencart
- Instalar Opencart
- PopUpTo Share | Opencart
- PopUp to Share | Opencart
Recientes
- Ber: Hola Xavi, Tienes que poner como prefijo, el prefijo que pusiste al crear la tienda, (no es obligatorio poner un...
- Ber: Genial, me alegro que te guste.:)
- Xavi: gracias pero al final ya lo consegui jejejeje
- Xavi: Hola me estoy volviendo loco porque no soy capaz de introducir los indices que nos has dejado hay. Intento y...
- Juanlu: Hola, he conseguido publicar en el muro, pero la foto que sale es muy pequeña, sale en un cuadrado a uno de...
CategorÃas
- Android (7)
- Bases de datos (75)
- Data Mining (2)
- MySql (3)
- Oracle (62)
- SGBD (4)
- Cajon desastre (4)
- Consolas (5)
- Desarrollo web (95)
- Blogger (1)
- Google Maps (3)
- Opencart (17)
- SEO (11)
- Wordpress (21)
- Ensamblador (13)
- Codigo (7)
- Facebook (API) (13)
- Adsense (1)
- Aplicación Test (1)
- Conectar con Facebook (3)
- Facebook en Español (2)
- Publicar Facebook (4)
- Flash (1)
- Flex (1)
- Forms (2)
- Hardware (18)
- Arquitectura (3)
- Iphone (5)
- Java (24)
- Android (1)
- JavaScript (17)
- ms-dos (1)
- Php (15)
- Proyectos Programación (10)
- Redes (22)
- Software (21)
- Ubuntu (6)
- Vb.net (4)
- Windows (1)
- XML (6)
Muy buen articulo. Gracias
Muchas Gracias por tu comentario!.
Un saludo.
Hola,
¿al crear un fichero con PUT, PUT_LINE, NEW_LINE… siempre crean una lÃnea en blanco en final? Lo hace incluso con PUT.
me crea siempre, lo haga con la función que lo haga una lÃnea en blanco nueva.
Muchas gracias.
Un saludo.