Generar archivo .dbf de un consulta Oracle

Necesito que me ayudes a como generar un archivo con extensión .dbf (de foxpro) a partir de una consulta en Oracle que generare a partir de un cursor.

1 respuesta

Respuesta
1
¿Estas utilizando Developer?
Si es así puedes utilizar el poderoso TEXT_IO para generar archivos texto.
Declare
vFile TEXT_IO.FILE_TYPE;
Begin
vFile:=TEXT_IO.FOPEN('c:\X.TXT','w');
For i in 1 .. 2 loop
TEXT_IO.PUT(vFile,'texto '||to_char(i));
TEXT_IO.NEW_LINE(vFile, i);
End Loop;
TEXT_IO.FCLOSE(vFile);
End;
Ojala te ayude.
Muchas gracias los comandos desde el plsql no los conocía me han sido útiles, pero debo expresarte (debí aclarar) que requiero de realizar esto desde un procedimiento (opción del menu), lo que he logrado hasta ahora es que la salida de un reporte lo haga hacia un archivo de texto (incluido los separadores), el problema que cuando hago esto me genera bien el archivo de texto (sin especios entre lineas, ni encabezados) pero cuando lo abro en MS Excel siempre coloca una linea entre cada registro y el rompimiento de página, ¿cómo puedo corregir esto desde un procedimiento del reporte?
Muchas gracias Diego por tu tiempo, ojala me puedas ayudar con estas consultas:
*For i in 1 .. 2 loop
el for es para ver cuantos registros tendria mi consulta o esa es la sintaxis?
*TEXT_IO.PUT(vFile,'texto '||to_char(i));
'text' es lo q yo voy a colocar en la linea, es mi cadena o no?
*to_char(i));
que haria el contador i en este caso?
*TEXT_IO es una libreria? donde puedo verla o ver otras librerias?
Gracias por el apoyo
Que yo sepa no puedes hacerlo directamente. Pero puedes generar un archivo texto desde el SqlPlus.
Te doy un ejemplo:
### quitas los encabezados
SQL> set head off
### quitas el salto de pagina
SQL> set pagesi 0
### defines la longitud max de linea
SQL> set linesize 500
### Puedes definir con que caracter estaran separados los campos. El default es un espacio en blanco
SQL> set colsep ";"
### defines el archivo donde sacas los datos
SQL> spool C:\carga.txt
### ejecutas tu consulta
SQL> Select * from cat;
### terminas la carga de datos.
SQL> Spool off
Finalmente levantas el TXT desde la interfaz del Fox.
Sorry! Estuve de vacaciones ...
A ver ...
Lo que te envíe fue un ejemplo del uso del TEXT_IO
1) Pero en tu caso debes declarar un cursor con la tabla que vas a barrer con el FOR. Realmente no puede ser un numero fijo (FOR 1 ..) Si no variable ( For i in Cursor1)
2) Afirmativo, es tu cadena en tu caso debería ser:
TEXT_IO.PUT(vFile,cursor.campo1||';'||cursor.campo2);
3) El contador i no hace nada para tu caso, solo era un ejemplo (¿lo probaste?).
4) Las librerías las puedes ver en los built-in packages en el object navigator del forms.
Saludos.
Diego.
PD. Si te sirvió y no tienes más preguntas. Cierra la pregunta.
¿Te sirvió la respuesta?
De ser así por favor ciérrala o continuemos en contacto.
Recuerda que este servicio se basa en los tiempos de respuestas y tu falta de atención degrada mi record.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas