Oracle – Exportar BLOB a fichero,
Julio 24, 2008
Hoy el dia es completito. Aqui vamos a exportar el campo BLOB de nuestra tabla a fichero.
CREATE OR REPLACE PROCEDURE blob2file(
--pdname VARCHAR2, psname VARCHAR2, pfname VARCHAR2) IS
pfname varchar2)
is
vblob BLOB;
vstart NUMBER := 1;
bytelen NUMBER := 32000;
len NUMBER;
my_vr RAW(32000);
x NUMBER;
l_output utl_file.file_type;
BEGIN
-- define output directory
l_output := utl_file.fopen('PRUEBA', pfname, 'WB', 32760);
-- get length of blob
SELECT dbms_lob.getlength(campo)
INTO len
FROM dani ;
-- save blob length
x := len;
-- select blob into variable
SELECT campo
INTO vblob
FROM dani ;
-- if small enough for a single write
IF len < 32760 THEN
utl_file.put_raw(l_output,vblob);
utl_file.fflush(l_output);
ELSE -- write in pieces
vstart := 1;
WHILE vstart < len
LOOP
dbms_lob.read(vblob,bytelen,vstart,my_vr);
utl_file.put_raw(l_output,my_vr);
utl_file.fflush(l_output) ;
-- set the start position for the next cut
vstart := vstart + bytelen;
-- set the end position if less than 32000 bytes
x := x - bytelen;
IF x < 32000 THEN
bytelen := x;
END IF;
END LOOP;
END IF;
utl_file.fclose(l_output);
END blob2file;
Hay que tener en cuenta, que el fichero fisico debe existir en el servidor y tenemos que crear el directorio en Oracle, con permisos de lectura/escritura.
Besos de colores,
Oracle – Cargar BLOB con SQLLOADER,
Julio 24, 2008
Buenos dias, hoy presento la nueva seccion sobre Oracle, aqui ire incluyendo cosas que crea que son utiles o inutiles de Oracle, ya que soy el que manda.
Para estrenar la seccion, vamos a cargar un fichero PDF en una tabla utilizando para ello la utilidad de Oracle, SQLLOADER.
Vamos a crear la tabla
CREATE TABLE T_FICHEROS
(
ficheros_id_codigo number , — ID del fichero
ficheros_ds_fichero varchar2(255) , — nombre del fichero
ficheros_bl_bfichero blob — fichero fisico
);
Vamos a crear el fichero de datos (datos.txt)
1,gastos_mensuales.pdf,gastos_mensuales.pdf
Creamos el fichero de control (control.ctl):
LOAD DATA
INFILE ‘datos.txt’
INTO TABLE tbl_ficheros
FIELDS TERMINATED BY ‘,’
( fichero_id_codigo integer,
fichero_ds_fichero char ,
fichero_bl_bfichero LOBFILE(fichero_ds_fichero)
TERMINATED BY EOF)
Lanzamos la carga (desde una shell o consola msdos)
sqlldr userid=usuario/pass@bd control=control.ctl log=carga.log bad=carga.bad
Listo!! ya tenemos nuestro ficheor cargado en la BD.
Besos de colores,