Eine PostgreSQL Datenbank in SQLite importieren
Tutorial: Wie muss man die Daten eines PostgreSQL Daten-Dumps bearbeiten, um diese anschließen direkt in eine SQLite Datenbank einzulesen?PostgreSQL in SQLite3 konvertieren
Wozu PostgreSQL in SQLite konvertieren?
Ich selbst bin Web-Entwickler und arbeite zu Hause gerne an einem einfachen und portablen System und dazu ist SQLite einfach fantastisch: Es ist ressourcen-schonend, klein und leicht zu verwenden.
Aber auf dem echten Server ist SQLite häufig ungeeignet. Um nun mit realistischen Daten am lokalen System zu arbeiten, konvertiere ich einfach einen PostgreSQL Dump des echten Servers und lese die Daten und die Struktur lokal in eine SQLite Datenbank ein. Et voilà: Ein 1:1 Spiegel des Servers auf meinem Localhost. Und das beste: es ist schnell, einfach und kostenlos.
- Erstellt mit pgMyAdmin oder auf der Konsole einen Dump der PostgreSQL Datenbank im SQL Format mit Struktur und Daten (oder auch nur Daten, falls bereits eine Struktur in einer fertigen SQLite DB vorliegt).
- SQLite kennt kein True und kein False: Ersetzt also alle true1 und alle false durch 0 durch.
- In PostgreSQL werden Primary Keys nachträglich durch eine Anweisung in eine Tabelle eingefügt. Bei SQLite geschieht dies, wie auch bei MySQL, während der Tabellenerzeugen. Ersetz also jetzt alle CREATE TABLES, wie hier gezeigt:
PostgreSQL CREATE TABLE Statement
CREATE TABLE xyz ( id integer NOT NULL, data1 integer NOT NULL, data2 integer NOT NULL, data3 timestamp with time zone NOT NULL );
SQLite CREATE TABLE mit PRIMARY KEY
CREATE TABLE xyz ( id integer NOT NULL PRIMARY KEY, data1 integer NOT NULL, data2 integer NOT NULL, data3 timestamp with time zone NOT NULL );
Die Daten sind jetzt bereit, um sie einzulesen.
Einschränkung: Komplexe Strukturen, wie etwa UNIQUE Felder und weitere Indices werden bei SQLite3 direkt mit dem CREATE TABLE Befehl integriert. Bei PostgreSQL gibt es dazu extra SQL Befehlszeilen im Dump. Diese müssen leider nach Erstellung der Sqlite-Datenbank manuell hinzugefügt werden. Bzw. mir ist bisher keine einfache Automatisierung dazu eingefallen.
Um eine ganz neue SQLite Datenbank zu erstellen, verwendet folgende Konsolenbefehle:
sqlite3 name_der_datenbank.db
Dann auf der SQLite Shell, die sich nun vor Euch befidnen sollte:
.read dump.sql
dump.sql ist dabei die Datei, die alle eben bearbeiteten Daten enthält. Vergesst nicht den Punkt vor "read". Damit kennzeichnet man einen SQLite Shell Befehl.
So, das war es schon. Viel Spaß!
Für die durchzuführenden Operationen lege ich Euch anbei das geniale Opensource Programm Notepad++ ans Herz: Ein Text-Editor mit Syntax Highlighting und genialen Plugins und Funktionen, dazu noch klein, schnell und portabel.
Bildquelle:
Paul-Georg Meister
(Eigene Homepage erstellen? Das is zu beachten)