Das Wichtigste zuerst Punkt I Probier einfach ein einfaches:
sqlite3 sqllitedb .dump | psql postgresdb
At diesen Punkt, teste es einfach aus. Schreiben Sie einige Testskripts in Django, um eine Reihe von Beispieldatensätzen für jede Anwendung auszugeben, und führen Sie dann einen Vergleich durch, um sicherzustellen, dass sie identisch sind. Wenn dies der Fall ist, ist Ihre Konvertierung wahrscheinlich in Ordnung.
Wenn das nicht funktioniert ...
ich gegen die Verwendung von Django würde empfehlen, die Daten zu entleeren und zu laden, da ich so vermute ich wird es nicht tun optimiert.
Stattdessen würde ich eine zweite Version Ihrer App mit den korrekten PostgreSQL-Datenbankeinstellungen erstellen, syncdb ausführen, um alle Tabellen zu erstellen, und dann die Daten mit einem anderen Tool von mysqllite nach PostgreSQL kopieren.
Die Sache ist, die meisten Probleme bei der Konvertierung über Daten in den Tabellendefinitionen usw. Diese scheinen am eigenwilligsten zu sein. Wenn Sie ein SQL-Skript erstellen können, das nur ein Dump nur des Tabelleninhalts ist, sollte das ziemlich Standard SQL INSERT INTO
Befehle sein.
Ehrlich gesagt kann ich nicht sehen, warum es ausländische Schlüsselprobleme geben würde. Angenommen, dass sqlite genaue Fremdschlüssel erstellt (und warum nicht?), Dann gibt es keine Möglichkeit, die nicht korrekt kopiert wird. Fremdschlüssel sind keine speziellen Daten. Es ist nicht wahrscheinlicher, dass das Feld UserProfile.user_id
einen falschen Wert enthält als das Feld UserProfile.photo
. Wenn das Fremdschlüsselproblem darin besteht, dass die Felder selbst nicht korrekt als Fremdschlüsselfelder identifiziert werden (d. H. Keine Einschränkungen), wird die Option, zuerst die Datenbank unter Verwendung von syncdb
zu erstellen, dieses Problem beheben.
Per Trunkierung: Wie ich es verstehe, wirft PostgreSQL einen harten Fehler, wenn Daten kurz vor dem Absturz sind. Ich weiß nicht, ob dies bei sqlite der Fall ist oder ob es einfach stillschweigend abgeschnitten wird. In beiden Fällen, wiederum unter der Annahme, dass SQLite nicht irgendwie die Daten beim Export zusammenfasst, sollten die Felder Daten enthalten, die die richtige Länge für das Feld haben, in das sie gehen.Das einzige, was mir dabei einfällt, ist die Zeichencodierung. Stellen Sie daher sicher, dass die PostgreSQL-Felder die gleiche Codierung haben wie die SQLite-Tabellen, zumindest während des Imports.
Python manage.py DumpData -> auf meinem PC nicht genügend Arbeitsspeicher ... Wenn ich App von App versuchen, es ist besser, aber der Import funktioniert nicht . –