Sie sollten in der Lage sein, diese Dump-Datei direkt in Folgendes einzugeben psql
:
/path/to/psql -d database -U username -W < /the/path/to/sqlite-dumpfile.sql
Wenn die id
Spalte "automatisch inkrementiert" werden soll, ändern Sie ihren Typ in der Tabellenerstellungszeile von "int" in "serial". PostgreSQL fügt dieser Spalte dann eine Sequenz hinzu, sodass INSERTs mit NULL-IDs automatisch der nächste verfügbare Wert zugewiesen wird. PostgreSQL erkennt auch keine AUTOINCREMENT
Befehle, daher müssen diese entfernt werden.
Sie sollten auch nach datetime
Spalten im SQLite-Schema suchen und diese in timestamp
PostgreSQL ändern (danke an Clay für den Hinweis).
Wenn Sie Boolesche Werte in Ihrer SQLite haben, können Sie 1
bzw. 0
und 1::boolean
bzw. konvertieren 0::boolean
oder die boolesche Spalte im Schemaabschnitt des Speicherauszugs in eine Ganzzahl ändern und diese nach dem Import manuell in PostgreSQL korrigieren .
Wenn Ihre SQLite BLOBs enthält, möchten Sie das zu verwendende Schema anpassen bytea
. Sie müssen wahrscheinlich auch einige decode
Anrufe einmischen . Das Schreiben eines schnellen und dreißigfachen Kopierers in Ihrer Lieblingssprache ist möglicherweise einfacher als das Zerlegen von SQL, wenn Sie jedoch mit vielen BLOBs zu tun haben.
Wenn Sie Fremdschlüssel haben, sollten Sie wie üblich wahrscheinlich nach set constraints all deferred
Problemen beim Einfügen von Ordnungen suchen , indem Sie den Befehl in das BEGIN / COMMIT-Paar einfügen.
Vielen Dank an Nicolas Riley für die Booleschen, Blob- und Einschränkungsnotizen.
Wenn Sie `
Code haben, der von einigen SQLite3-Clients generiert wurde, müssen Sie diese entfernen.
PostGRESQL erkennt auch keine unsigned
Spalten. Möglicherweise möchten Sie diese löschen oder eine benutzerdefinierte Einschränkung wie die folgende hinzufügen:
CREATE TABLE tablename (
...
unsigned_column_name integer CHECK (unsigned_column_name > 0)
);
Während SQLite standardmäßig Nullwerte verwendet ''
, müssen diese nach PostgreSQL als festgelegt werden NULL
.
Die Syntax in der SQLite-Dump-Datei scheint größtenteils mit PostgreSQL kompatibel zu sein, sodass Sie einige Dinge patchen und füttern können psql
. Das Importieren eines großen Datenstapels über SQL INSERTs kann eine Weile dauern, funktioniert jedoch.