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 idSpalte "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 AUTOINCREMENTBefehle, daher müssen diese entfernt werden.
Sie sollten auch nach datetimeSpalten im SQLite-Schema suchen und diese in timestampPostgreSQL ändern (danke an Clay für den Hinweis).
Wenn Sie Boolesche Werte in Ihrer SQLite haben, können Sie 1bzw. 0und 1::booleanbzw. konvertieren 0::booleanoder 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 decodeAnrufe 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 deferredProblemen 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 unsignedSpalten. 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.