Daten importieren

Es ist oft von Interesse, Daten, die als einfache Text- oder Excel-Dateien vorhanden sind, in Datenbanktabellen zu speichern, da man auf so gespeicerte Daten mit leistungsfähigen Datenbank-Operationen zugreifen und durch Verknüfpung mehreren Tabellen neue Informationen bereit stellen kann.

 

  Daten aus einer CSV-Datei importieren

Beispiel 1: Daten aus einer Text-Datei in einer Datenbanktabelle speichern

Die Datei babynames.csv stamt aus dem Internet und enthält 100 in der Schweiz am meist gewählten Kindervornamen im Jahr 2016.
Laden Sie die Datei top_vornamen.zip herunter, packen Sie sie aus und speichern Sie die Dateien bybynames.csv im Unterverzeichnis /bin des Installationsordners. In diesem Unterverzeichnis befindet sich die Datei tigerjython2.jar. Mit dem folgenden Programm können Sie die Daten aus dieser Textdatei in eine Datenbanktabelle einlesen.

# ImportCSV.py

from dbtable import *

tabelle = DbTable("vname", "rang")
tabelle.importFromCSV("babynames.csv", ";")
print tabelle
tabelle.save("demo.db", "babynames")
print "done"
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

Erklärungen zum Programmcode:

dbtable: Im tigerjython2.jar intergriertes Modul, welches vereinfachten Umgang mit Datenbanketabellen ermöglicht.
DbTable(vname", "rang"): Erzeugt eine Tabelle mit den Feldern vname und rang
importFromCSV("babynames.csv", ";"): Daten in der CSV-Datei sind mit ; getrennt
save("demo.db", "babynames"): Die tabelle wird in der Datenbank demo.db unter babynames gespeichert


Beispiel 2: Rangliste der Vornamen aus der Tabelle person

Eine Rangliste der Knabennamen erstellt man, indem man die Datei boynames.csv importiert.

# ImportCSV1.py

from dbtable import *

tabelle = DbTable("forename", "rank")
tabelle.importFromCSV("boynames.csv", ";")
print tabelle
tabelle.save("demo.db", "boynames")
print "done"
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 

 

Beispiel 3: Rangliste der Vornamen aus der Tabelle person

Durch Verknüfpfen der Tabellen person und babynames kann man überprüfen, ob sich die person-Vornamen unterden top100 befinden und ihre Rangliste nach Beliebtheit erstellen.

# ImportEx2.py

from sqlite3 import *
from prettytable import printTable

with connect("demo.db") as con:
    cursor = con.cursor()
    sql = """SELECT name,vorname,rang FROM person 
             JOIN babynames ON person.vorname = babynames.vname ORDER BY rang"""
    cursor.execute(sql)
    printTable(cursor)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

Ergebnis:

Die Vornamen Marc und Paul befinden sich offensichtlich nicht unter den 100 am meisten gewählten Vornamen.