Python Tutorial
- jetzt Python programmieren lernen

CSV-Datei in SQlite3 Datenbank importieren

Schauen wir uns den Inhalt einer CSV-Datei an. Meistens liegen uns die Daten in Excel vor, von dort wir diese direkt in eine CSV-Datei exportieren können:

Daten aus Excel über CSV-Datei in Python Datenbank importieren
Daten aus Excel über CSV-Datei in Python Datenbank importieren

Der Export aus Excel wird über:

Datei -> Speichern unter -> Dateiformat

Excel-Daten als CSV-Datei speichern
Excel-Daten als CSV-Datei speichern

Wir erhalten dann eine Textdatei, deren Datenfelder der Semikolons getrennt sind:

nachname;vorname;geburtstag
Müller;Mike;05.03.80
Sommer;Elke;02.05.87
Schuster;Johanna;10.10.93
Trister;Theodor;08.03.87

Und die CSV-Datei über Python ausgelesen und angezeigt:

import csv
with open("adressen.csv") as csvdatei:
    csv_reader_object = csv.reader(csvdatei, delimiter=';')
    for row in csv_reader_object:
        print(row)

Als Ergebnis erhalten wir die Daten als Datentyp "Liste":

['ufeffnachname', 'vorname', 'geburtstag']
['Müller', 'Mike', '05.03.80']
['Sommer', 'Elke', '02.05.87']
['Schuster', 'Johanna', '10.10.93']
['Trister', 'Theodor', '08.03.87']

Die ersten Zeichen 'ufeff' kommen daher, dass wir in der entsprechenden UTF8-Variante abgespeichert haben. Da wir die Überschriften nicht benötigt, kann man diesen kleinen Schönheitsfehler ignorieren und diese erste Zeile mit den Überschriften einfach mit einem Texteditor aus der CSV-Datei löschen. Dann passt alles beim richtigen Import.

Jetzt wollen wir eine Verbindung zur Datenbank "adressen.db" aufbauen und diese gegebenenfalls neu anlegen, falls diese noch nicht exisitert:

import csv
import sqlite3
verbindung = sqlite3.connect("adressen.db")
zeiger = verbindung.cursor()

sql_anweisung = """
CREATE TABLE IF NOT EXISTS adressen (
nachname VARCHAR(30),
vorname VARCHAR(20),
geburtstag DATE
);"""

zeiger.execute(sql_anweisung)

with open("adressen.csv") as csvdatei:
    csv_reader_object = csv.reader(csvdatei, delimiter=';')
    for row in csv_reader_object:
        print(row)

Ab jetzt können wir unsere SQlite3 Datenbank befüllen. Wir benötigen den entsprechenden SQL-Anweisung:

import csv
import sqlite3
verbindung = sqlite3.connect("adressen.db")
zeiger = verbindung.cursor()

sql_anweisung = """
CREATE TABLE IF NOT EXISTS adressen (
nachname VARCHAR(30),
vorname VARCHAR(20),
geburtstag DATE
);"""

zeiger.execute(sql_anweisung)

sql_anweisung = """
INSERT INTO adressen (nachname, vorname, geburtstag)
VALUES (:nachname, :vorname, :geburtstag)
"""

with open("adressen.csv") as csvdatei:
    csv_reader_object = csv.reader(csvdatei, delimiter=';')

    with sqlite3.connect("adressen.db") as verbindung:
        zeiger = verbindung.cursor()
        zeiger.executemany(sql_anweisung, csv_reader_object)

Und zum Test können wir jetzt die Datenbank auslesen und den Inhalt anzeigen:

import sqlite3
verbindung = sqlite3.connect("adressen.db")
zeiger = verbindung.cursor()
zeiger.execute("SELECT * FROM adressen")
inhalt = zeiger.fetchall()
print(inhalt)
verbindung.close()

Wir haben alle Daten auf einen Rutsch in unsere SQlite3-Datenbank importiert und können damit weiterarbeiten.

So kann man schnell SQlite-Datenbanken mit Inhalt füllen.

Bitte unterstützen Sie dieses Projekt

Sie können dieses Projekt in verschiedenen Formen unterstützen - wir würden uns freuen und es würde uns für weitere Inhalte motivieren :).

Empfehlen Sie es weiter - wir freuen uns immer über Links und Facebook-Empfehlungen.

Sie können uns auch eine Spende über PayPal zukommen lassen.

Bestellen Sie Bücher über folgenden Link bei Amazon:
Bücher über Python

Vielen Dank für Ihre Unterstützung