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

Cómo exportar resultados de consultas a un archivo CSV en SQLcl (Oracle)

Si está utilizando SQLcl para ejecutar consultas en la base de datos Oracle, puede usar SPOOL comando para exportar los resultados de su consulta a un archivo CSV.

Ejemplo

Aquí hay un ejemplo que exporta una tabla completa:

SET SQLFORMAT csv
SPOOL '/Users/barney/data/countries.csv';
SELECT * FROM countries;
SPOOL off;
SET SQLFORMAT ansiconsole

Esto es lo que hizo, línea por línea:

  1. Mi primera línea establece el SQLFORMAT a csv . Esto asegura que la salida esté realmente separada por comas. Si no hiciera esto, podría terminar con un archivo con un .csv extensión, pero con contenido que no está separado por comas.
  2. La segunda línea es donde usamos el SPOOL comando para especificar dónde se escribirá el archivo de salida. Asegúrese de cambiar el /Users/barney/data/countries.csv parte a una ubicación en su sistema.
  3. En la tercera línea, ejecuté la consulta SQL:los resultados que estoy exportando. En este caso, exporté los countries completos. mesa.
  4. A continuación, giré SPOOL apagado.
  5. Finalmente, terminé configurando el SQLFORMAT volver a ansiconsole (que era lo que estaba usando antes de configurarlo en csv ).

Así es como se ve el archivo resultante:

"COUNTRY_ID","COUNTRY_NAME","REGION_ID"
"AR","Argentina",2
"AU","Australia",3
"BE","Belgium",1
"BR","Brazil",2
"CA","Canada",2
"CH","Switzerland",1
"CN","China",3
"DE","Germany",1
"DK","Denmark",1
"EG","Egypt",4
"FR","France",1
"HK","HongKong",3
"IL","Israel",4
"IN","India",3
"IT","Italy",1
"JP","Japan",3
"KW","Kuwait",4
"MX","Mexico",2
"NG","Nigeria",4
"NL","Netherlands",1
"SG","Singapore",3
"UK","United Kingdom",1
"US","United States of America",2
"ZM","Zambia",4
"ZW","Zimbabwe",4

25 rows selected. 

Eliminar encabezados de columna

Puede eliminar los encabezados de las columnas con SET HEADING off :

SET SQLFORMAT csv
SET HEADING off
SPOOL '/Users/barney/data/countries.csv';
SELECT * FROM countries;
SPOOL off;
SET SQLFORMAT ansiconsole
SET HEADING on

Resultado:

"AR","Argentina",2
"AU","Australia",3
"BE","Belgium",1
"BR","Brazil",2
"CA","Canada",2
"CH","Switzerland",1
"CN","China",3
"DE","Germany",1
"DK","Denmark",1
"EG","Egypt",4
"FR","France",1
"HK","HongKong",3
"IL","Israel",4
"IN","India",3
"IT","Italy",1
"JP","Japan",3
"KW","Kuwait",4
"MX","Mexico",2
"NG","Nigeria",4
"NL","Netherlands",1
"SG","Singapore",3
"UK","United Kingdom",1
"US","United States of America",2
"ZM","Zambia",4
"ZW","Zimbabwe",4

25 rows selected. 

En este caso, cambié HEADINGS volver a encender después de exportar el archivo.

Eliminar comentarios

Puede eliminar la X rows selected con SET FEEDBACK off :

SET SQLFORMAT csv
SET HEADING off
SET FEEDBACK off
SPOOL '/Users/barney/data/countries.csv';
SELECT * FROM countries;
SPOOL off;
SET SQLFORMAT ansiconsole
SET HEADING on 
SET FEEDBACK on

Resultado:

"AR","Argentina",2
"AU","Australia",3
"BE","Belgium",1
"BR","Brazil",2
"CA","Canada",2
"CH","Switzerland",1
"CN","China",3
"DE","Germany",1
"DK","Denmark",1
"EG","Egypt",4
"FR","France",1
"HK","HongKong",3
"IL","Israel",4
"IN","India",3
"IT","Italy",1
"JP","Japan",3
"KW","Kuwait",4
"MX","Mexico",2
"NG","Nigeria",4
"NL","Netherlands",1
"SG","Singapore",3
"UK","United Kingdom",1
"US","United States of America",2
"ZM","Zambia",4
"ZW","Zimbabwe",4

Aquí, me volví FEEDBACK volver a encender después de exportar el archivo.

Múltiples tablas

En este ejemplo, exporto los resultados de una consulta un poco más compleja que une dos tablas:

SET SQLFORMAT csv 
SET HEADING off 
SET FEEDBACK off
SPOOL '/Users/barney/data/employees_jobs.csv';
SELECT 
    e.employee_id,
    e.first_name,
    e.last_name,
    e.salary,
    j.job_title
FROM employees e
INNER JOIN jobs j
ON e.job_id = j.job_id
WHERE e.salary BETWEEN 12000 AND 15000
ORDER BY SALARY DESC;
SPOOL off;
SET SQLFORMAT ansiconsole
SET HEADING on 
SET FEEDBACK on

Archivo resultante:

145,"John","Russell",14000,"Sales Manager"
146,"Karen","Partners",13500,"Sales Manager"
201,"Michael","Hartstein",13000,"Marketing Manager"
147,"Alberto","Errazuriz",12000,"Sales Manager"
205,"Shelley","Higgins",12000,"Accounting Manager"
108,"Nancy","Greenberg",12000,"Finance Manager"

Adjuntar los resultados

Por defecto, SPOOL usa REPLACE , que reemplaza el archivo si ya existe.

Sin embargo, podemos usar el APPEND argumento para agregar los resultados al archivo.

SET SQLFORMAT csv 
SET HEADING off 
SET FEEDBACK off
SPOOL '/Users/barney/data/employees_jobs.csv' APPEND;
SELECT 
    e.employee_id,
    e.first_name,
    e.last_name,
    e.salary,
    j.job_title
FROM employees e
INNER JOIN jobs j
ON e.job_id = j.job_id
WHERE e.salary BETWEEN 11000 AND 11999
ORDER BY SALARY DESC;
SPOOL off;
SET SQLFORMAT ansiconsole
SET HEADING on 
SET FEEDBACK on

Archivo resultante:

145,"John","Russell",14000,"Sales Manager"
146,"Karen","Partners",13500,"Sales Manager"
201,"Michael","Hartstein",13000,"Marketing Manager"
147,"Alberto","Errazuriz",12000,"Sales Manager"
205,"Shelley","Higgins",12000,"Accounting Manager"
108,"Nancy","Greenberg",12000,"Finance Manager"
168,"Lisa","Ozer",11500,"Sales Representative"
174,"Ellen","Abel",11000,"Sales Representative"
114,"Den","Raphaely",11000,"Purchasing Manager"
148,"Gerald","Cambrault",11000,"Sales Manager"

Este ejemplo agregó los resultados al archivo que se creó (y completó) en el ejemplo anterior.