Guarde el resultado de la consulta en un archivo CSV en SQLite

Junaid Khan 21 junio 2023
  1. Guardar una sola consulta de SQLite en el archivo CSV
  2. Guarde todas las consultas de SQLite en el archivo CSV
  3. Apertura automática del archivo CSV
  4. Copie consultas SQL individuales o todas en el archivo CSV
  5. Use las consultas JOIN para copiar la salida en el archivo CSV
Guarde el resultado de la consulta en un archivo CSV en SQLite

El propósito de SQLite es almacenar, leer y administrar datos en la base de datos local. Podemos usar el lenguaje de consulta para obtener los datos deseados de la base de datos SQLite.

A veces, es necesario guardar los resultados recuperados en un guardado. Para este propósito, guardamos los resultados de la consulta de la base de datos SQLite en el archivo CSV.

Para hacerlo, usamos el shell de línea de comandos de SQLite mediante el comando .mod junto con los comandos .once o .output. Posteriormente, usamos el comando .system para abrir ese archivo.

Guardar una sola consulta de SQLite en el archivo CSV

Usamos el comando .once para exportar solo una o una consulta al archivo CSV. Cuando usamos el comando .once, el siguiente resultado de la declaración SQL se exporta al archivo CSV y regresa a la consola.

En el siguiente ejemplo, también habilitamos los encabezados de columna. En la siguiente línea, cambiamos el modo CSV y usamos el comando .once para copiar el siguiente comando SQL al archivo result_of_single_query.csv.

# for showing headers on the screen
.headers on
# turning on the csv mode
.mode csv
# copying a single query only
.once result_of_single_query.csv
SELECT * FROM Customers;

El resultado de la declaración anterior se exporta al archivo CSV, y aquí están los datos que contiene el archivo CSV. Si desea ignorar los encabezados al exportar el archivo, use .headers off en la consulta SQL anterior.

CustomerId, CustomerName, Age
1, "Holder", 39
2, "Alex", 42
3, "Bob", 27
4, "John", 74

Guarde todas las consultas de SQLite en el archivo CSV

Usando el comando .once, podemos exportar solo la siguiente consulta SQL.

También tenemos una instalación para almacenar todas las consultas SQL en el archivo CSV. Con el comando .output, guardamos o agregamos todas las consultas SQL al archivo CSV.

# for copying all the queries to the CSV file
.output save_all_queries.csv
# both these SQL statements get copied to the CSV file
SELECT * FROM Customers;
SELECT * FROM Customers LIMIT 2;

Primero, configuramos el archivo CSV de salida en las consultas SQL anteriores, exactamente como en el primer ejemplo. Luego, más tarde ejecute las dos consultas SQL para guardar o agregar los datos de las consultas SQL en el archivo CSV.

Una vez que abra el archivo guardado, el archivo mostrará el siguiente resultado en la pantalla.

CustomerId, CustomerName, Age
1, "Holder", 39
2, "Alex", 42
3, "Bob", 27
4, "John", 74
CustomerId, CustomerName, Age
1, "Holder", 39
2, "Alex", 42

Nuevamente, no usamos el comando .headers off en las sentencias SQL; por lo tanto, los encabezados obtienen una copia en un archivo una vez que se ejecuta cada instrucción SQL. Para omitir los encabezados por segunda vez, tenemos que usar el comando .headers on la primera vez y luego .headers off antes de ejecutar la última instrucción.

.headers on
.output save_all_queries.csv
SELECT * FROM Customers;
.headers off
SELECT * FROM Customers LIMIT 2;

El resultado de la declaración SQL anterior sería así:

CustomerId, CustomerName, Age
1, "Holder", 39
2, "Alex", 42
3, "Bob", 27
4, "John", 74
1, "Holder", 39
2, "Alex", 42

Apertura automática del archivo CSV

El comando .system se utiliza para abrir el archivo CSV. La sintaxis para abrir el archivo depende del tipo de sistema.

Usamos los siguientes comandos para abrir el archivo CSV en los diferentes sistemas operativos.

En un sistema operativo Mac, usamos el siguiente comando para abrir un archivo:

.system open query_to_open_file.csv

En un sistema operativo Windows, usamos el siguiente comando para abrir un archivo:

.system c:/data/query_to_open_file.csv

En un sistema operativo Unix/Linux, usamos el siguiente comando para abrir un archivo:

.system xdg-query_to_open_file.csv

Copie consultas SQL individuales o todas en el archivo CSV

Hemos discutido que los comandos .once y .output se usan para almacenar o agregar consultas SQL en el archivo CSV. Esta solución es posible cuando estamos usando el símbolo del sistema SQL.

Pero si intentamos un script reutilizable para guardar los datos mediante programación en el archivo CSV, usamos el siguiente código fuente.

# use pandas for data manipulation and analysis
import pandas as pd

# sqlite3 represents the version of the sqlite, which is 3
import sqlite3

connection = sqlite3.connect("present_database.sqlite")
dataframe = pd.read_sql("SELECT * from customers", connection)
dataframe.to_csv("customers.csv", index=False)

Dentro de la parte de consulta de la función read_sql, podemos personalizarla para obtener otra parte de la tabla de la base de datos SQLite. De manera similar, podemos ejecutar un solo comando para guardar todas las consultas en el archivo CSV.

# gets all the table
for table in c.execute("SELECT customerName FROM sqlite_master WHERE type='table';").fetchall():
    t = table[0]
    dataframe = pd.read_sql('SELECT * from ' + t, conn)
    dataframe.to_csv(t + '_single_command.csv', index = False)

Aquí, usamos el comando sqlite_master para obtener todas las tablas en la base de datos SQLite.

Use las consultas JOIN para copiar la salida en el archivo CSV

No estamos limitados a la copia de consulta de una sola tabla; en su lugar, podemos copiar varias consultas con JOINs izquierdo o derecho. A continuación, se muestra que la consulta une dos tablas y genera la consulta en el archivo CSV.

.header on
.mode csv
.once /Users/sqlite//customers.csv
SELECT CustomerId, CustomerName, ProductName
FROM Customers AS a
  INNER JOIN Products AS b
  ON a.ProductId = b.ProductId
ORDER BY ProductName;

Las declaraciones SQL anteriores generan lo siguiente en el archivo CSV.

CustomerId, CustomerName, Age
1, "Holder Boxer", 39
2, "Alex Ferguson", 42
3, "Bob Marlet", 27
4, "John Wack", 74
Junaid Khan avatar Junaid Khan avatar

Hi, I'm Junaid. I am a freelance software developer and a content writer. For the last 3 years, I have been working and coding with Python. Additionally, I have a huge interest in developing native and hybrid mobile applications.

LinkedIn

Artículo relacionado - SQLite CSV