Kurzbeschreibung Passend für Leser: Mobile Entwicklung Beim Migrieren von SQLite3-Daten nach MySQL treten viele Syntaxprobleme auf. Es ist unmöglich, alle Probleme auf einmal aufzulisten. In diesem Artikel werden so viele Probleme wie möglich aufgelistet, da jeder auf unterschiedliche Probleme stößt. Mithilfe dieses Artikels können Leser im Voraus vorhersagen, ob sie auf Probleme stoßen werden. Wenn sie wissen, was sie erwartet, können sie unerwartete Probleme vermeiden oder reduzieren, die nach der Datenmigration auftreten können. Anhand der Liste der Probleme können Sie erkennen, welche Probleme Sie lösen müssen. Ich werde Ihnen auch eine Lösung zu Ihrer Information bereitstellen. Für das Migrationsproblem gibt es keine Universallösung, da jeder auf andere Probleme stößt. Wenn in der Lösung gleichzeitig einige widersprüchliche Probleme vorhanden sind, wird es zu einem Problem. Okay, kommen wir gleich zur Sache! Fragenliste 1. Verschiedene von SQLite3 ausgegebene Variablen werden in MySQL nicht erkannt, z. B. (BEGIN TRANSACTION, COMMIT usw.). 2. Die SQLite-Datenbankdaten können das versteckte Feld „rowid“ nicht exportieren. 3. Das Datenexportformat der SQLite-Datenbank ist nicht mit anderen Datenbanken kompatibel, beispielsweise mit einfachen und doppelten Anführungszeichen 4. Die exportierten SQLite-Daten haben keine Spaltennamen, wie im 5. Spezielle Symbolverarbeitung, wie etwa das Escape-Zeichen "\" 6. Die Längenbeschränkungen für Tabellenfelder sind unterschiedlich 7. Effizienz beim Schreiben von Daten Problemlösung Erstens können Sie keine Tools wie sqliteStudio und Navicat verwenden. Hier können Sie Shell-Befehle verwenden, um die Inhaltsgenerierung direkt zu vermeiden.
Gleichzeitig kann die Verwendung der Shell-Methode mit sehr wenig Code implementiert werden. 1. Lösen Sie das Problem, dass der Feldspaltenname nicht ausgegeben wird Das Ausführen des sqlite3-Befehls "
Dann erhalten Sie den Spaltennamen durch Zeichenfolgenersetzung wie folgt: Angenommen, die Variablen sind COLS = Name, Beschreibung 2. Lösen Sie das Problem mit einfachen und doppelten Anführungszeichen Das Ausführen des sqlite3-Befehls "
Diese Methode kann das Problem einfacher und doppelter Anführungszeichen lösen. Hier geben wir einfache Anführungszeichen direkt und einheitlich aus. 3. Lösen Sie das Problem, dass das Standardfeld Rowid von SQLite3 nicht angezeigt werden kann. Ändern Sie hier Rowid direkt in ID Stellen Sie den aktuellen Modus auf den Einfügemodus .dump ein. Das Ausführen des sqlite3-Befehls "
4. Verwenden Sie den Shell-String-Befehl, um die zuvor erhaltenen Spaltennamen zur folgenden SQL-Anweisung hinzuzufügen Nach der Änderung sieht es folgendermaßen aus:
5. Verarbeitung von Escape-Zeichen Wenn die Daten in der Datenbank Escape-Zeichen enthalten, beispielsweise: Dieses Skript löst hauptsächlich die oben genannten Probleme 1 bis 5. Sie können das Skript nach Bedarf ändern. #!/bin/sh SQLITE=sqlite3 wenn [ -z "$1" ] ; dann Echo-Nutzung: $0 sqlite3.db Ausfahrt fi DB="$1" TABELLEN=`"$SQLITE" "$DB" .tables` für TABELLE in $TABLES; tun ERSTELLEN = `"$SQLITE" "$DB" "SQL AUSWÄHLEN VON sqlite_master, WO Typ = \"Tabelle\" UND Name = \"$TABLE\";"` echo $CREATE";" | Schnitt -d'=' -f2 | sed "s/^CREATE TABLE $TABLE (/CREATE TABLE $TABLE (id int auto_increment Primärschlüssel,/g" COLS=`"$SQLITE" "$DB" "pragma table_info($TABLE)" | cut -d'|' -f2 ` COLS_CS=`echo $COLS | sed 's/ /,/g'` echo ".mode insert \n.header on \n select rowid as id,$COLS_CS from $TABLE;\n" | "$SQLITE" "$DB" | sed "s/^INSERT INTO \"Tabelle\"/INSERT INTO $TABLE /g" | sed 's#\\#\\\\#g' Erledigt Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Detaillierte Erläuterung des Linux-CRM-Bereitstellungscodes
>>: Element Plus implementiert Affix
Das Image kann auf hub.docker.com gespeichert wer...
Vorwort Das Dateisystem ist für die Organisation ...
Offizielle MySQL-Website: https://www.mysql.com/d...
einführen Die RANGE-Partitionierung basiert auf e...
Vorwort: Docker ist eine Open-Source-Anwendungsco...
Inhaltsverzeichnis Hintergrund analysieren Datens...
Kürzlich erhielten wir von einem Kunden eine Bitt...
Kontroverse um Nofollow Zwischen Zac und Guoping ...
Sag es im Voraus Wir alle wissen, dass Docker ein...
1. Problembeschreibung Aus Sicherheitsgründen öff...
Inhaltsverzeichnis Speicherverwaltung der Speiche...
Inhaltsverzeichnis I. Überblick 2. pt-archiver Ha...
Inhaltsverzeichnis Vorwort Fehlergrenze Jenseits ...
einführen GitLab CE oder Community Edition ist ei...
Inhaltsverzeichnis 1. Die Rolle des Arrays: 2. De...