Bases de Datos > Oracle
Exportar Un Clob
lcauso:
Buenos días, estoy intentado exportar el valor de un CLOB a un fichero de S.O pero me estoy encontrando con errores.
Primeramente he creado un directorio:
SQL> create directory PRUEBA_VISTA2 as 'c:\temp';
y he dado permisos al usuario que va a realizar la operacion:
SQL> grant read,write on PRUEBA_VISTA2 to oficinaadm;
grant read,write on PRUEBA_VISTA2 to oficinaadm
*
ERROR en línea 1:
ORA-00942: table or view does not exist
SQL> grant read,write on directory PRUEBA_VISTA2 to oficinaadm;
Este es mi procedimiento:
declare
fichero utl_file.file_type;
texto clob;
cantidad binary_integer:=32767;
posicion integer:=1;
texto_l varchar2(32767);
begin
select campo1 into texto from tabla1;
fichero:=utl_file.fopen('PRUEBA_VISTA', 'texto.txt','w',32767);
LOOP
DBMS_LOB.read (texto, cantidad, posicion, texto_l);
UTL_FILE.put(fichero, texto_l);
posicion := posicion + cantidad;
END LOOP;
utl_file.fclose(fichero);
end;
/
lcauso:
continuacion del anterior
Cuando lo ejecuto obtengo el siguiente error:
declare
*
ERROR en línea 1:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 449
ORA-29283: invalid file operation
ORA-06512: at line 11
parece como si no reconociera el directorio creado.
¿ALGUIEN SABE COMO RESOLVERLO?
Muchas gracias
JuanK:
--- Código: Text --- SQL> create directory PRUEBA_VISTA2 as 'c:\temp';y he dado permisos al usuario que va a realizar la operacion:SQL> grant read,write on PRUEBA_VISTA2 to oficinaadm;grant read,write on PRUEBA_VISTA2 to oficinaadm*ERROR en línea 1:ORA-00942: table or view does not exist SQL> grant read,write on directory PRUEBA_VISTA2 to oficinaadm;Este es mi procedimiento:declarefichero utl_file.file_type;texto clob;cantidad binary_integer:=32767;posicion integer:=1;texto_l varchar2(32767);beginselect campo1 into texto from tabla1;fichero:=utl_file.fopen('PRUEBA_VISTA', 'texto.txt','w',32767);LOOPDBMS_LOB.read (texto, cantidad, posicion, texto_l);UTL_FILE.put(fichero, texto_l);posicion := posicion + cantidad;END LOOP;utl_file.fclose(fichero);end;/
ummm
1 - no estoy seguro... pero no uede tener un varchar2 tan grande:
texto_l varchar2(32767);
2- le has dado permisos al directorio: PRUEBA_VISTA2
SQL> grant read,write on directory PRUEBA_VISTA2 to oficinaadm;
pero usas PRUEBA_VISTA
fichero:=utl_file.fopen('PRUEBA_VISTA', 'texto.txt','w',32767);
eso por el momento
lcauso:
Hola JuanK:
La creación del directorio es correcta y los permisos están bien asignados (en el ejemplo me equivoque al poner PRUEBA_VISTA2).
El problema es que no me reconoce el directorio, ¿es necesario modificar el parametro UTL_FILE_DIR del fichero INIT.ORA para que apunte a la ruta del directorio indicado en PRUEBA VISTA?.
Gracias
lcauso:
Hola de nuevo,
además de la creacion del directorio es necesario que el parametro UTL_FILE_DIR tenga el path del directorio donde se va a crear el fichero. A si que ya he conseguido ejecutar mi procedimiento exportando el valor de un campo CLOB a un fichero utilizando UTL_FILE.
Ahora tengo un problema porque se me llena el temporal, ¿alguien sabe como se libera el espacio en el tablespace temporal?
Gracias
Navegación
[#] Página Siguiente
Ir a la versión completa