1. Exportieren Sie zunächst die SQLite-DB-Datei nach SQL
sqlite3 db.sqlite3 .dump>output.sql
db.sqlite3 ist die SQLite-Datenbankdatei
Output.sql ist der Name der exportierten SQL-Datei
2. Konvertierung und Verarbeitung von SQL-Dateien
sed 's/AUTOINCREMENT/AUTO_INCREMENT/g' output.sql | sed 's/datetime/timestamp/g' | sed 's/INTEGER/int/g' > new.sql
Nachdem SQL verarbeitet wurde, wird beim Import in MySQL möglicherweise immer noch ein Fehler gemeldet, und basierend auf dem Fehler ist eine zusätzliche Verarbeitung erforderlich.
3. In MySQL importieren
Geben Sie MySQL ein, wählen Sie Daten aus und führen Sie es dann aus
source /mnt/d/new.sql
4. Fehlerbehandlung
Wenn der Import erfolgreich ist, überspringen Sie einfach diesen Schritt .
Wenn dies fehlschlägt, verarbeiten Sie die SQL-Datei basierend auf dem Fehler erneut.
- Wenn beispielsweise die Anweisung zur Tabellenerstellung falsch ist, muss sie möglicherweise manuell korrigiert (oder nach der Erstellung der Tabelle importiert) werden.
- Beispielsweise können einige nutzlose SQL-Anweisungen auch mit sed '/INSERT INTO auth_/d' gelöscht werden.
- Einige Fehlerberichte, wie z. B. PRAGMA Foreign_keys=OFF;, können als gelöscht betrachtet werden.
- Für die Konvertierung zwischen Django SQLite und MySQL konfiguriere ich MySQL zuerst direkt in den Einstellungen und verwende dann den Migrationsbefehl von Django, um zuerst eine leere Tabelle in MySQL zu erstellen.
- Python manage.py macht Migrationen
- Python manage.py migrieren
- Gibt 2 Standardeinstellungen zurück sed 's/AUTOINCREMENT/AUTO_INCREMENT/g' output.sql | sed 's/datetime/timestamp/g' | sed 's/INTEGER/int/g' | sed '/CREATE TABLE /d' | sed '/INSERT INTO django_/d' | sed '/INSERT INTO auth_/d' | sed '/INSERT INTO Login_ldapuserdb/d' > new.sql
- Hier wird die Tabellenerstellungsanweisung „CREATE TABLE“ gelöscht und die mit insert auth_ und django_ beginnende Dateneinfügung wird ebenfalls gelöscht, da die Django-Migration bereits ausgeführt wurde.
Mehrmals wiederholen, Fehler melden <-> ändern, bis beim Importieren keine Fehler mehr auftreten.