Seite 1 von 1

Anfängerfrage SQLite3 in Python: Daten aus Datei imortieren

Verfasst: Dienstag 27. Oktober 2009, 17:12
von SteeWeeDee
Hallo Pyhton Forum!

Ich benutze die API Sqlite 3 in Python um eine DB zu befüllen. Dies ist mit dem Befehl .IMPORT file table möglich. Auf der CLI ist das mit dem Befehl sqlite> .IMPORT test.txt table möglich. Aber wie mache ich das in Python? Habe SQLite3 importiert und ein Connectorobjekt erstellt.

Also folgendermaßen:

Code: Alles auswählen

import sqlite3
conn = sqlite3.connect('./exampleDB')
c.execute('''CREATE table exampleTable
(Reihendefinition...)''')
c = conn.cursor()
c.execute(""".IMPORT test.txt exampleTable USE SEPERATOR "," """)
Leider wird mir dann angezeigt, dass der Syntax nicht stimmt, auch ohne den Seperator Parameter. Kann mir jemand weiterhelfen und mir sagen, wie man in SQLite3 Dateien in Entitäten einlesen kann? Sonst bleibt mir nichts anderes übrig, als die Zeilen der Datei mit INSERT INTO in die Tabelle einzufügen. :(

Verfasst: Dienstag 27. Oktober 2009, 17:19
von Hyperion
Also dieses ".IMPORT"-Kommando muss etwas spezielles im CLI sein. Jedenfalls habe ich auf http://www.sqlite.org/lang.html nichts dazu gefunden und auch in der Doku zum sqlite3-Modul steht dazu nichts.

Du musst das Einfügen der Daten folglich anders realisieren müssen.

Wie liegen diese denn vor? Evtl. gibts da ja einen anderen komfortablen Weg?

Desweiteren: Falsches Forum. Wir haben ein spezielles Sub-Forum für Datenbank-Fragen ;-)

Verfasst: Dienstag 27. Oktober 2009, 17:30
von SteeWeeDee
in etwa so wie es in http://stackoverflow.com/questions/1628 ... ile-import gezeigt wird.

Es handelt sich um eine Datei mit Einträgen, die durch einen "," getrennt sind. Daher bietet sich die Lösung an.

Hoppla, das hab ich wohl übersehen - sorry :(

Verfasst: Dienstag 27. Oktober 2009, 17:45
von Hyperion
SteeWeeDee hat geschrieben: Es handelt sich um eine Datei mit Einträgen, die durch einen "," getrennt sind. Daher bietet sich die Lösung an.
Ich frage noch einmal vorsichtshalber nach: Die Daten liegen so def. vor? Du kannst sie also nicht anders bekommen?

Ok, das ist doch ein einfaches CSV-Format. Dafür gibt es in Python ein Modul (csv) in der Standard-Lib (auch wenn ich es nicht so mag). Mit Hilfe dessen kannst Du das File recht einfach parsen. Die Ergebnisse schreibst Du dann einfach in die SQLite-Datenbank. Mittels der executemany()-Funktion sollte das evtl. sogar direkt mit dem Reader-Objekt klappen.

Verfasst: Dienstag 27. Oktober 2009, 17:58
von SteeWeeDee
Ja die Daten liegen als csv Datei vor. Genau gesagt: Datum, Integerzahl. Dann probier ich das mal aus :)

Damit wär das Topic dann doch im richtigen Forum gelandet :)

Verfasst: Mittwoch 28. Oktober 2009, 02:34
von SteeWeeDee
Mit ein bisschen Stringmanipulation hats geklappt- Danke