Speichern Sie das Abfrageergebnis in einer CSV-Datei in SQLite
- Speichern Sie eine einzelne SQLite-Abfrage in der CSV-Datei
- Speichern Sie alle SQLite-Abfragen in der CSV-Datei
- Automatisches Öffnen der CSV-Datei
- Kopieren Sie einzelne oder alle SQL-Abfragen in die CSV-Datei
-
Verwenden Sie
JOIN
-Abfragen, um die Ausgabe in die CSV-Datei zu kopieren
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
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