Speichern Sie das Abfrageergebnis in einer CSV-Datei in SQLite

Junaid Khan 21 Juni 2023
  1. Speichern Sie eine einzelne SQLite-Abfrage in der CSV-Datei
  2. Speichern Sie alle SQLite-Abfragen in der CSV-Datei
  3. Automatisches Öffnen der CSV-Datei
  4. Kopieren Sie einzelne oder alle SQL-Abfragen in die CSV-Datei
  5. Verwenden Sie JOIN-Abfragen, um die Ausgabe in die CSV-Datei zu kopieren
Speichern Sie das Abfrageergebnis in einer CSV-Datei in SQLite

Der Zweck von SQLite besteht darin, Daten in der lokalen Datenbank zu speichern, zu lesen und zu verwalten. Wir können die Abfragesprache verwenden, um die gewünschten Daten aus der SQLite-Datenbank zu erhalten.

Manchmal ist es erforderlich, die abgerufenen Ergebnisse in einem Speicher zu speichern. Zu diesem Zweck speichern wir Abfrageergebnisse der SQLite-Datenbank in der CSV-Datei.

Dazu verwenden wir die SQLite-Befehlszeilen-Shell, indem wir den Befehl .mod mit den Befehlen .once oder .output verbinden. Später verwenden wir den Befehl .system, um diese Datei zu öffnen.

Speichern Sie eine einzelne SQLite-Abfrage in der CSV-Datei

Wir verwenden den Befehl .once, um nur eine einzelne oder eine Abfrage in die CSV-Datei zu exportieren. Wenn wir den Befehl .once verwenden, wird das Ergebnis der nächsten SQL-Anweisung in die CSV-Datei exportiert und an die Konsole zurückgegeben.

Im folgenden Beispiel haben wir auch die Spaltenüberschriften aktiviert. In der nächsten Zeile haben wir den CSV-Modus umgeschaltet und mit dem .once-Befehl den nächsten SQL-Befehl in die result_of_single_query.csv-Datei kopiert.

# 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;

Das Ergebnis der obigen Anweisung wird in die CSV-Datei exportiert, und hier sind die Daten, die die CSV-Datei enthält. Wenn Sie die Header beim Exportieren der Datei ignorieren möchten, verwenden Sie in der obigen SQL-Abfrage .headers off.

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

Speichern Sie alle SQLite-Abfragen in der CSV-Datei

Mit dem Befehl .once können wir nur die nächste SQL-Abfrage exportieren.

Wir haben auch eine Möglichkeit, alle SQL-Abfragen in der CSV-Datei zu speichern. Mit dem Befehl .output speichern oder hängen wir alle SQL-Abfragen an die CSV-Datei an.

# 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;

Zuerst setzen wir die Ausgabe-CSV-Datei in den obigen SQL-Abfragen, genau wie im ersten Beispiel. Führen Sie dann später die beiden SQL-Abfragen aus, um die SQL-Abfragedaten in der CSV-Datei zu speichern oder anzuhängen.

Sobald Sie die gespeicherte Datei öffnen, zeigt die Datei die folgende Ausgabe auf dem Bildschirm.

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

Auch hier haben wir den Befehl .headers off nicht in SQL-Anweisungen verwendet; Daher erhalten Header eine Kopie in einer Datei, sobald jede SQL-Anweisung ausgeführt wird. Um die Header ein zweites Mal zu überspringen, müssen wir das erste Mal den Befehl .headers on und dann .headers off verwenden, bevor wir die letzte Anweisung ausführen.

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

Das Ergebnis der obigen SQL-Anweisung würde wie folgt aussehen:

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

Automatisches Öffnen der CSV-Datei

Mit dem Befehl .system wird die CSV-Datei geöffnet. Die Syntax zum Öffnen der Datei hängt vom Systemtyp ab.

Wir verwenden die folgenden Befehle, um die CSV-Datei auf den verschiedenen Betriebssystemen zu öffnen.

Auf einem Mac-Betriebssystem verwenden wir den folgenden Befehl, um eine Datei zu öffnen:

.system open query_to_open_file.csv

Auf einem Windows-Betriebssystem verwenden wir den folgenden Befehl, um eine Datei zu öffnen:

.system c:/data/query_to_open_file.csv

Auf einem Unix/Linux-Betriebssystem verwenden wir den folgenden Befehl, um eine Datei zu öffnen:

.system xdg-query_to_open_file.csv

Kopieren Sie einzelne oder alle SQL-Abfragen in die CSV-Datei

Wir haben besprochen, dass die Befehle .once und .output verwendet werden, um SQL-Abfragen in der CSV-Datei zu speichern oder anzuhängen. Diese Lösung ist möglich, wenn wir die SQL-Eingabeaufforderung verwenden.

Wenn wir jedoch versuchen, die Daten mit einem wiederverwendbaren Skript programmgesteuert in die CSV-Datei zu speichern, verwenden wir den folgenden Quellcode.

# 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)

Innerhalb des Abfrageteils der Funktion read_sql können wir sie anpassen, um einen weiteren Tabellenteil aus der SQLite-Datenbank zu erhalten. Ebenso können wir einen einzigen Befehl ausführen, um alle Abfragen in der CSV-Datei zu speichern.

# 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)

Hier verwenden wir den Befehl sqlite_master, um alle Tabellen in der SQLite-Datenbank abzurufen.

Verwenden Sie JOIN-Abfragen, um die Ausgabe in die CSV-Datei zu kopieren

Wir sind nicht auf das Kopieren einer einzelnen Tabellenabfrage beschränkt; Stattdessen können wir jede beliebige Abfrage mit linken oder rechten JOINs kopieren. Das Folgende zeigt, dass die Abfrage zwei Tabellen verbindet und die Abfrage in die CSV-Datei ausgibt.

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

Die obigen SQL-Anweisungen geben Folgendes in die CSV-Datei aus.

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

Verwandter Artikel - SQLite CSV