„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie konvertiert man eine MySQL-Dump-SQL-Datei in eine SQLite3-Datenbank?

Wie konvertiert man eine MySQL-Dump-SQL-Datei in eine SQLite3-Datenbank?

Veröffentlicht am 08.11.2024
Durchsuche:246

How to Convert a MySQL Dump SQL File to a SQLite3 Database?

Konvertieren von MySQL Dump SQL in Sqlite3 DB

Das Importieren einer MySQL Dump SQL-Datei in eine SQLite3-Datenbank erfordert eine Konvertierung, um die Kompatibilität sicherzustellen.

Das bereitgestellte Shell-Skript bietet eine automatisierte Möglichkeit, den Dump zu konvertieren Datei:

#!/bin/sh
# Usage: $0 

if [ "x$1" == "x" ]; then
   echo "Usage: $0 "
   exit
fi
cat $1 |
grep -v ' KEY "' |
grep -v ' UNIQUE KEY "' |
grep -v ' PRIMARY KEY ' |
sed '/^SET/d' |
sed 's/ unsigned / /g' |
sed 's/ auto_increment/ primary key autoincrement/g' |
sed 's/ smallint([0-9]*) / integer /g' |
sed 's/ tinyint([0-9]*) / integer /g' |
sed 's/ int([0-9]*) / integer /g' |
sed 's/ character set [^ ]* / /g' |
sed 's/ enum([^)]*) / varchar(255) /g' |
sed 's/ on update [^,]*//g' |
perl -e 'local $/;$_=<>;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' |
perl -pe '
  if (/^(INSERT. ?)\(/) {
     $a=$1;
     s/\\'\''/'\'\''/g;
     s/\\n/\n/g;
     s/\),\(/\);\n$a\(/g;
  }
  ' > $1.sql
cat $1.sql | sqlite3 $1.db > $1.err
ERRORS=`cat $1.err | wc -l`
if [ $ERRORS == 0 ]; then
  echo "Conversion completed without error. Output file: $1.db"
  rm $1.sql
  rm $1.err
    rm tmp
else
   echo "There were errors during conversion.  Please review $1.err and $1.sql for details."
fi
; Dann echo „Verwendung: $0 “ Ausfahrt fi Katze $1 | grep -v ' KEY "' | grep -v ' EINZIGARTIGER SCHLÜSSEL "' | grep -v ' PRIMÄRSCHLÜSSEL ' | sed '/^SET/d' | sed 's/ unsigned / /g' | sed 's/ auto_inkrement/ Primärschlüssel autoinkrement/g' | sed 's/ smallint([0-9]*) / integer /g' | sed 's/ tinyint([0-9]*) / integer /g' | sed 's/ int([0-9]*) / integer /g' | sed 's/ Zeichensatz [^ ]* / /g' | sed 's/ enum([^)]*) / varchar(255) /g' | sed 's/ on update [^,]*//g' | perl -e 'local $/;$_=;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' | perl -pe ' if (/^(INSERT. ?)\(/) { $a=$1; s/\\'\''/'\'\''/g; s/\\n/\n/g; s/\),\(/\);\n$a\(/g; } ' > $1.sql Katze $1.sql | sqlite3 $1.db > $1.err ERRORS=`cat $1.err | wc -l` if [ $ERRORS == 0 ]; Dann echo „Konvertierung ohne Fehler abgeschlossen. Ausgabedatei: $1.db“ rm $1.sql rm $1.err rm tmp anders echo „Während der Konvertierung sind Fehler aufgetreten. Weitere Informationen finden Sie in $1.err und $1.sql.“ fi

Das Skript führt die folgenden Transformationen durch:
  • Entfernt redundante Schlüsseldefinitionen.
  • Setzt Felder auf unsigned, falls zutreffend.
  • Setzt Felder mit automatischer_Inkrementierung zur automatischen Inkrementierung des Primärschlüssels.
  • Konvertiert Integer-Typen in ihre Entsprechungen in SQLite (Smallint, Tinyint und int wird zu einer Ganzzahl).
  • Entfernt Zeichensätze.
  • Konvertiert Enum-Typen in varchar(255).
  • Entfernt Satzverweise auf Update-Trigger.
  • Konvertiert Mehrere Zeileneinfügungen in einzelne Einfügungen für SQLite-Kompatibilität.
  • Wickelt das konvertierte SQL in eine Transaktion für Sicherheit.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3