sql >> Base de Datos >  >> RDS >> Oracle

Cómo escribir en un archivo CSV usando Oracle SQL*Plus

[SQLPlus](https://docs.oracle.com/cd/B19306_01/server.102/b14357/qstart.htm) es una herramienta interactiva que viene instalada con cada instalación moderna de Oracle. SQL Además, le permite ir más allá de las consultas de base de datos estándar con lotes, scripts y cálculos más allá del alcance normal de Oracle.

Incluso es posible, como exploraremos a continuación, generar archivos de texto, como .csv , usando el resultado de una consulta de base de datos en particular.

Iniciando SQL*Plus

Dependiendo de su instalación de Oracle, puede tener acceso a una de las muchas versiones o "modos" diferentes en los que puede ejecutar la aplicación SQL*Plus.

Línea de comandos SQL*Plus

Si desea utilizar la línea de comandos SQL*Plus Command-line , simplemente emitirá el sqlplus comando desde su shell:

$ sqlplus

Esto intentará conectarlo al predeterminado base de datos y se le pedirá que ingrese sus credenciales para autenticarse.

En caso de que necesite conectarse a una database diferente o usa un user diferente (schema ), intente lo siguiente, reemplazando sus propios valores según sea necesario:

$ sqlplus schema@//machine.domain:port/database

iSQL*Plus

Si tiene acceso a él, es posible que desee utilizar iSQL*Plus URL , que es una versión basada en navegador de la herramienta de línea de comandos SQL*Plus.

Esto se logra simplemente visitando la URL iSQL*Plus URL para su base de datos e instalación. La URL exacta variará, pero normalmente tiene el siguiente formato:http://machine_name.domain:port/isqlplus

SQL*Plus para Windows

Si usa Windows, también hay una versión de SQL*Plus con interfaz gráfica de usuario de Windows, que normalmente se puede iniciar desde el menú de inicio:Start > Programs > Oracle > Application Development > SQL Plus .

Enviar una consulta a un archivo

Ahora que está conectado a SQL*Plus, podemos comenzar a crear nuestro archivo.

Modificar la configuración de SQL*Plus

El primer paso es configurar algunas configuraciones del sistema SQL*PLus usando el SET declaración.

Para este ejemplo, modificaremos manualmente esta configuración una vez antes de nuestra consulta y generación de archivos, pero si lo desea, puede cambiar los valores predeterminados de varias configuraciones en su User Profile , ubicado en el login.sql archivo.

set colsep ,
set headsep off
set pagesize 0
set trimspool on

Las primeras configuraciones que normalmente no querrá cambiar, pero explicaremos brevemente lo que logra cada una.

  • colsep es el carácter separador utilizado para dividir sus columnas. Para un .csv archivo, esto es una simple coma.
  • headsep es el carácter separador de la fila del encabezado (si necesita uno). En este ejemplo, no mostraremos la fila del encabezado, por lo que dejaremos esto off .
  • pagesize es el número de líneas “por página”. Esta es una configuración un poco arcaica que está pensada para imprimir sin tener demasiadas líneas por página. Con un valor de 0 , no usamos páginas ya que estamos enviando a un archivo. Si elige mostrar el header fila, establezca pagesize a un número muy grande (más grande que el número esperado de resultados de registro en la consulta), por lo que su fila de encabezado solo aparecerá una vez en lugar de una vez "por página".
  • trimspool establecer en on simplemente elimina los espacios en blanco finales.

Ahora será necesario modificar las dos configuraciones finales según su consulta.

set linesize #
set numwidth #
  • Para linesize , el # el valor debe ser el número total de columnas de salida en su consulta resultante.
  • numwidth es el ancho de columna (número de espacios de caracteres) que se utiliza al generar valores numéricos.

Comando de CARRETE

Nota:El SPOOL el comando no está disponible en la versión SQL*Plus basada en navegador, iSQL*Plus URL . Para generar archivos mientras usa iSQL*Plus, cambie la configuración de preferencia necesaria para generar directamente un archivo.

Con nuestra configuración cuidada, ahora debemos decirle a SQL*Plus que genere un archivo. Esto se logra usando el SPOOL declaración.

Mientras SPOOL está activo , SQL*PLus almacenará el resultado de cualquier consulta en el archivo especificado.

Por lo tanto, el siguiente comando a ingresar es spool :

spool file_path

Saltando un poco hacia adelante, después su consulta está insertada, también debe detener spool por lo que la salida del archivo se cierra usando el spool off comando:

spool off

Insertar la Consulta

El último paso después de modificar la configuración y spool se está ejecutando es insertar su consulta. Para nuestro ejemplo simple, estamos sacando todos los libros de nuestro books mesa.

SELECT
  title,
  primary_author
FROM
  books;

No olvide el punto y coma para cerrar su declaración de consulta, luego ingrese el mencionado spool off comando.

Eso es todo, ha generado un nuevo archivo de texto con los resultados de su consulta usando SQL*Plus.

Consejo:uso de un archivo de script

En lugar de ingresar manualmente cada línea, se sugiere ingresar todas las configuraciones en un nuevo archivo de secuencia de comandos que puede ejecutar en SQL*Plus en un solo comando.

Cree un nuevo archivo de script con EDIT declaración:

EDIT file_name

Ahora pegue toda la lista de comandos del script en su nuevo archivo y guárdelo. El contenido completo de nuestro script de ejemplo se puede encontrar a continuación.

set colsep ,
set headsep off
set pagesize 0
set trimspool on
set linesize 2
set numwidth 5

spool books.csv

SELECT
  title,
  primary_author
FROM
  books;

spool off

Para ejecutar el script, simplemente use @ símbolo seguido del nombre del archivo:

@file_name

Su secuencia de comandos debe ejecutarse y el .csv archivo creado como se esperaba.