¿Cómo exportar una consulta de Oracle usando SQL*Plus?

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! :)

Esta entrada fue publicada en Oracle y etiquetada , , . Guarda el enlace permanente.

10 respuestas a ¿Cómo exportar una consulta de Oracle usando SQL*Plus?

  1. EDTC dijo:

    Muy bueno el documento y el soporte a las dusa gracias

  2. prueba dijo:

    Prueba de mensaje

  3. Isabel dijo:

    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;

  4. Kruke dijo:

    Hola,

    He utilizado la config para .csv y me ha funcionado perfecto.

    Muchas gracias por las soluciones propuestas.

    Un saludo,

  5. juan dijo:

    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

  6. Guillermo dijo:

    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?

  7. Eddy dijo:

    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..

  8. Guillermo dijo:

    Gracias!! Sebas

  9. Guillermo dijo:

    Excelente la explicación, solo tengo una duda eso se coloca en un script o se hace desde el prompt

    • Sebas dijo:

      @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!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>