Exportar fácilmente datos de Oracle a un fichero plano

Una manera muy simple de exportar datos de una consulta, tabla, etc. de una base de datos oracle a un fichero plano es utilizar el comando SPOOL de SQLPlus. De esta manera no es necesario depender de herramientas visuales, que no siempre están disponibles, o no siempre funcionan como queremos. Además se pueden utilizar las funciones de formato de Oracle en la misma sentencia SELECT para que los datos se generen ya en el formato que necesitemos.

 

Si, por ejemplo, queremos recuperar algunos datos de todos los registros de una tabla de clientes ordenados por fecha de alta, sólo hay que abrir una sesión de SQLPlus y ejecutar esta serie de comandos:


SQL> SET HEADING OFF
SQL> SET FEEDBACK OFF
SQL> SPOOL C:\datos_de_clientes.txt
SQL> SELECT 'Cliente ' || CLI_NOMBRE || ', ' || CLI_NIF || '. Fecha alta: ' || TO_CHAR(CLI_FECHAALTA,'YYYY-MM-DD')
FROM TABLA_CLIENTES
ORDER BY CLI_FECHAALTA DESC;
SQL> SPOOL OFF;
SQL> SET FEEDBACK ON
SQL> SET HEADING ON

Las primeras líneas ocultan las cabeceras que contendrían el nombre de los campos, y no nos interesan porque nosotros sólo queremos los datos. Spool dirige la salida de datos hacia el fichero 'datos_de_clientes.txt' de la unidad C de nuestra máquina local.

 

Esta técnica también se puede emplear para menesteres más sofisticados como la construcción dinámica de scripts a partir de los metadatos que tenemos disponibles en nuestra BD.

 

Contenido relacionado

  • Es bastante habitual si se trabaja con bases de datos que a menudo se tenga que realizar alguna tarea de creación o alteración de estructuras, análisis, recompilación, etc. sobre objetos de la base de datos. Para ello se suele crear un script con numerosas sentencias DDL, en las que la mayoría de las veces lo único que cambia es el nombre del objeto a tratar.
    En estos casos puede ahorrarnos mucho trabajo la utilización del diccionario de la base de datos para construir estas sentencias dinámicamente.

    Pondremos como ejemplo la creación de un nuevo campo para almacenar la fecha de creación de los registros en todas las tablas de un esquema de una base de datos ORACLE. Para ello utilizaríamos la siguiente sentencia..

  • Para importar y exportar datos de SQL Server Microsoft proporciona la herramienta bpc, que funciona por linea de comandos. Aunque sería de agradecer que SQL Server Management Studio proporcionara alguna utilidad gráfica de importación/exportación que nos evitara tener que recurrir a utilizar la línea de comandos, bpc es muy fácil de utilizar, al menos para hacer cosas sencillas. También es de los métodos más eficientes para exportar o importar datos en SQL Server.

    La sintaxis básica de este comando es esta:

    bcp {tabla o consulta} {in/out} nombre_del_fichero [opciones]

    Las opciones se pueden complicar bastante, e incluso se pueden construir y utilizar ficheros de formato, pero para la mayoría de los casos puede ser suficiente con utilizar las opciones más básicas que nos permitan utilizar un fichero para exportar/importar los datos de una tabla:

  • Saludos, quisiera algun ejemplo de como pudiese generar un archivo plano tras un simple query en SQLplus, indicando separador, y ancho de campo (si es posible) o ancho de la linea....

     

    Ejemplo:

     

    Select idcliente, nombre, apellido, edad, sexo from clientes;

     

    Resultado:

     

    1|David|Montecalvo|24|Masculino

     

    Nota: cuando hago un query en sqlplus, cuando son muchos campos, a veces el me genera el archivo, (usando spool) asi:

     

    idcliente               nombre            apellido       

    _______               ______            ______

    1                         David               Montecalvo

     

    edad           sexo

    ____           _______

  • Si tienes el usuario de sistema con el que se ha instalado la base de datos puedes entrar en SQL plus como usuario DBA y sin introducir ninguna contraseña de la siguiente manera:

    1. Entra en el sistema con este usuario.
    2. Desde la linea de comandos, entra en SQLplus poniendo:

    sqlplus "/as sysdba"

    Si has necesitado entrar así porque no recordabas la contraseña de algún usuario, ya puedes modificarla/s para poder utilizarlo/s después:

    SQL> alter user nombre_usuario identified by nuevo_password;

    Te puede pasar que haya más de una BD instalada en el servidor, por lo que tendrás que asegurarte de que las variables de entorno del usuario de Oracle están apuntando a la base de datos que te interesa.

    Para comprobar que has entrado en la base de datos correcta antes de tocar nada puedes ejecutar esta sentencia:

    SQL> select name from v$database;

  • Al administrar nuestra base de datos tenemos que lidiar a veces con aplicaciones de terceros(ERPs, etc...) o desarrolladas dentro de la empresa que a veces pueden tener mal planteados algunos procesos o por el motivo que sea traten la base de datos como si fuera exclusivamente suya. Voy a mostraros un ejemplo:

    Entorno:
    -servidor con dos puntos de montaje. El del sistema operativo donde también residen los archivos de datos de la base de datos y un disco secundario donde tenemos los archivos de copia rman más los archivelogs...

     

 

 

 

Gestion del Conocimiento    |    Business Intelligence y Analítica    |     Bases de Datos    |      ERP     |      CRM      |     Tendencias tecnológicas