Para poder exportar información desde una base de datos Oracle, lo conveniente es usar SQL*Plus desde la linea de comandos.
Este producto que viene incluido con el cliente Oracle, nos permite desde linea de comandos ejecutar comandos SQL y lo mejor de todo es que es muy útil para ser usado en scripts.
La exportación de los datos la podemos realizar siguiendo distintos formatos destinos, entre los cuales los más populares son: CSV (Comma Separated Values), texto plano separado por "|" (pipe) y texto plano separado por tab.
Lo que cambia entre ellos es el separador que se use para delimitar las columnas que hayamos consultado.
Exportar a CSV:
SET heading off SET linesize 32767 SET colsep , SET pagesize 0 SET newpage none SET feedback off SET termout off SET recsep off SET sqlprompt "" SET TRIMSPOOL ON SET echo off spool "output.csv" /*Query a ejecutar, por ejemplo:*/ SELECT object_name, status, created FROM all_objects WHERE owner='PUBLIC' AND ROWNUM < 10; spool off EXIT
Exportar a texto separado por | (pipe):
SET heading off SET linesize 32767 SET colsep "|" SET pagesize 0 SET newpage none SET feedback off SET termout off SET recsep off SET sqlprompt "" SET TRIMSPOOL ON SET echo off spool "output.txt" /*Query a ejecutar, por ejemplo:*/ SELECT object_name, status, created FROM all_objects WHERE owner='PUBLIC' AND ROWNUM < 10; spool off EXIT
Archivo separado por TAB:
Y por último para poder exportar a un archivo de texto separado por TAB, tenemos que ejecutar las siguientes lineas:
SET heading off SET linesize 32767 SET pagesize 0 SET newpage none SET feedback off SET termout off SET recsep off SET sqlprompt "" SET TRIMSPOOL ON SET echo off /*Parte especifica para el tab:*/ col TAB# new_value TAB NOPRINT SELECT CHR(9) TAB# FROM dual; SET colsep "&TAB" spool "output.txt" /*Query a ejecutar, por ejemplo:*/ SELECT object_name, status, created FROM all_objects WHERE owner='PUBLIC' AND ROWNUM < 10; spool off EXIT
Con estas instrucciones podemos exportar cualquier consulta a un archivo y poder así usarlo en Excel o cualquier otra planilla de cálculo.
Espero que les sirva! :)
Muy bueno el documento y el soporte a las dusa gracias
Prueba de mensaje
Hola
Como agrego titulo al campo que muestro en el select ??
De modo que campo object_name diga Nombre
SELECT object_name, status, created FROM all_objects
WHERE owner=’PUBLIC’ AND ROWNUM < 10;
Hola,
He utilizado la config para .csv y me ha funcionado perfecto.
Muchas gracias por las soluciones propuestas.
Un saludo,
Hola, tenes idea si una vez que crea el archivo por medio de SPOOL
(EJ: SPOOL “NOMBRE_ARCHIVO.EXTencion”)
lo puedo RENOMBRAR
Ejemplo:
de “NOMBRE_ARCHIVO.EXT” a “RENOMBRO_ARCHIVO.TXT”
GRACIAS
Sebas, espero que estes bien!!!
en estos dias he estado exportando consultas a un archivo de texto plano configuro todas mis variables set, pero…. me he dado cuenta que la consulta me devuelve 120 registros por ejemplo y el archivo .txt que genero aparecen 115 a que se debe esto?
Saludos, fuciona excelente, solo nesecito que me exporte tambien los titulos de columnas pero no lo hace, me podrias indicar como se pueden obetener tambien…
Gracias..
Gracias!! Sebas
Excelente la explicación, solo tengo una duda eso se coloca en un script o se hace desde el prompt
@Guillermo, esto si vos querés podés ponerlo como parte de un archivo “.sql”, y ejecutarlo de la siguiente manera en la linea de comandos:
sqlplus usuario/password@BaseDeDatos @archivo.sql
Donde “archivo.sql” sea el nombre de archivo que grabaste con los parámetros para exportar y la consulta.
Saludos!