Oracle - URGENTE-Generar fichero plano

 
Vista:

URGENTE-Generar fichero plano

Publicado por Marta (30 intervenciones) el 02/02/2006 12:45:03
Buenos días,

Necesito crear un fichero plano desde un procedimiento de base de datos. Mi base de datos es la 10g.

Pruebo con esto para hacer una prueba:

declare
ff utl_file.file_type;
begin
ff:=utl_file.fopen('C:\','testFF.txt','W');
utl_file.PUT_LINE(FF,TO_CHAR(SYSDATE,'fmDAY, FMDD.MM.RR HH24:MI:SS'));
utl_file.fclose(ff);
end;

Y me da el siguiente error:

ERROR en línea 1:
ORA-29283: operación de archivo no válida
ORA-06512: en "SYS.UTL_FILE", línea 475
ORA-29283: operación de archivo no válida
ORA-06512: en línea 4

¿alguien me puede decir que me pasa? ¿hay alguna otra forma de generar un fichero de texto?

Muchas gracias y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:URGENTE-Generar fichero plano

Publicado por Marta (30 intervenciones) el 02/02/2006 13:13:05
Si hago esta select:

SQL> select value
2 from v$parameter
3 where name = 'utl_file_dir';

VALUE
------------------------------------------
*

Esto creo que debe estar así, ¿verdad?

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:URGENTE-Generar fichero plano

Publicado por JSL (186 intervenciones) el 02/02/2006 16:57:08
El UTL_FILE escribira en el SERVIDOR ... no el la PC ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:URGENTE-Generar fichero plano

Publicado por Marta (30 intervenciones) el 02/02/2006 17:02:00
Quiero que escriba en un fichero del servidor de aplicaciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:URGENTE-Generar fichero plano

Publicado por saenix (30 intervenciones) el 02/02/2006 17:55:07
saludos.

Como bien comento jsl , el paquete UTL_FILE, escribe uncamente en el servidor donde se encuentre la base de datos , no escribe en directorio locales del cliente. Y para escribir en el servidor de la base de datos, primero necesitas tener permisos de escritura en un directorio , despues crear los directorios desde la base de datos como sigue

SQL> CREATE DIRECTORY log_dir AS '/appl/gl/log';
SQL> GRANT READ ON DIRECTORY log_dir TO DBA;
SQL> CREATE DIRECTORY out_dir AS '/appl/gl/user'';
SQL> GRANT READ ON DIRECTORY user_dir TO PUBLIC;

checa el ejemplo que te mando es tomado de la documentacion de oracle 10g rel 2

DECLARE
V1 VARCHAR2(32767);
F1 UTL_FILE.FILE_TYPE;
BEGIN
-- In this example MAX_LINESIZE is less than GET_LINE's length request
-- so the number of bytes returned will be 256 or less if a line terminator is
seen.
F1 := UTL_FILE.FOPEN('MYDIR','MYFILE','R',256);
UTL_FILE.GET_LINE(F1,V1,32767);
UTL_FILE.FCLOSE(F1);
-- In this example, FOPEN's MAX_LINESIZE is NULL and defaults to 1024,
-- so the number of bytes returned will be 1024 or less if a line terminator is
seen.
F1 := UTL_FILE.FOPEN('MYDIR','MYFILE','R');
UTL_FILE.GET_LINE(F1,V1,32767);
UTL_FILE.FCLOSE(F1);
Note: The examples are UNIX-specific.
File Location Filename Accessible By
/appl/gl/log L12345.log Users with DBA privilege
/appl/gl/user u12345.tmp All users
File Location Filename Invalid Because
/appl/gl/log/backup L12345.log # subdirectories are not
accessible
/APPL/gl/log L12345.log # directory strings must
follow case sensitivity rules
as required by the O/S
/appl/gl/log backup/L1234.log # filenames may not include
portions of directory paths
/user/tmp L12345.log # no corresponding CREATE
DIRECTORY command has
been issued
Using UTL_FILE
UTL_FILE 167-9
-- In this example, GET_LINE doesn't specify a number of bytes, so it defaults
to
-- the same value as FOPEN's MAX_LINESIZE which is NULL in this case and
defaults to 1024.
-- So the number of bytes returned will be 1024 or less if a line terminator is
seen.
F1 := UTL_FILE.FOPEN('MYDIR','MYFILE','R');
UTL_FILE.GET_LINE(F1,V1);
UTL_FILE.FCLOSE(F1);
END;

ahora si el servidor de aplicaciones y el de base de datos estan en la misma maquina, creo que sera un poco mas facil hacerlo, pero si estan en diferentes maquinas como es mas probable, necesitas despues de crear el archivo, enviarlo por medios del sistema operativo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:URGENTE-Generar fichero plano

Publicado por JSL (186 intervenciones) el 02/02/2006 18:34:20
Va a escribir en el SERVIDOR de la base de datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:URGENTE-Generar fichero plano

Publicado por Federico Mejia R. (1 intervención) el 29/10/2007 17:28:47
La cuestion es que no tienes permisos para acceder al directorio C:\ o no lo has creado correctamente con create directory directory_name as 'path';
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

URGENTE-Generar fichero plano

Publicado por carlos (2 intervenciones) el 04/02/2013 19:57:13
Es que el no reconoce el disco c, puesto que el esta tratando de crear el archivo es en el servidor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

URGENTE-Generar fichero plano

Publicado por Yohn Richard (1 intervención) el 31/05/2013 16:12:12
Holas,

Estoy probando ambos codigos y de cualquier forma ambos me generan el siguiente error:

ERROR en línea 1:
ORA-29283: operación de archivo no válida
ORA-06512: en "SYS.UTL_FILE", línea 475
ORA-29283: operación de archivo no válida
ORA-06512: en línea 4

Que debe hacer para solucionarlo y que me esta falta por poner.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

URGENTE-Generar fichero plano

Publicado por AlexC (1 intervención) el 03/04/2014 13:38:16
Hola,

Este error suele darse cuando no tienes permisos de LECTURA sobre el fichero que piensas recorrer.

Si tienes privilegios de acceso al directorio y sobre el fichero tienes que, en principio concederle permisos 666 (Lectura y Escritura: para propietario, grupo y públicos).


Un saludo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar