Heim  >  Artikel  >  Datenbank  >  Wie konvertiert man MySQL-Dump-Dateien in ein SQLite-importable-Format?

Wie konvertiert man MySQL-Dump-Dateien in ein SQLite-importable-Format?

DDD
DDDOriginal
2024-10-28 18:16:30465Durchsuche

 How to Convert MySQL Dump Files into SQLite-Importable Format?

Konvertieren von MySQL-Dump-Dateien in ein SQLite-Importformat

Problem:

Importieren einer exportierten MySQL-Dump-SQL-Datei in ein SQLite3 Datenbank direkt mit dem sqlite3-Tool zu erstellen, ist nicht erfolgreich. Wie kann das gelöst werden?

Lösung:

Das folgende Shell-Skript kann die MySQL-Dump-Datei in ein Format konvertieren, das in SQLite3 importiert werden kann:

#!/bin/sh
if [ "x" == "x" ]; then
   echo "Usage:  <dumpname>"
   exit
fi
cat  |
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=;
     s/\'\''/'\'\''/g;
     s/\n/\n/g;
     s/\),\(/\);\n$a\(/g;
  }
  ' > .sql
cat .sql | sqlite3 .db > .err
ERRORS=`cat .err | wc -l`
if [ $ERRORS == 0 ]; then
  echo "Conversion completed without error. Output file: .db"
  rm .sql
  rm .err
    rm tmp
else
   echo "There were errors during conversion.  Please review .err and .sql for details."
fi

Erklärung:

  • Das Skript filtert zunächst bestimmte Zeilen aus der MySQL-Dump-Datei heraus, die beim Import in SQLite3 Probleme verursachen können, wie z. B. Tastenbeschränkungen und Zeichensatz Definitionen.
  • Es konvertiert dann bestimmte Datentypen wie smallint und int in Integer und entfernt alle vorzeichenlosen Modifikatoren.
  • Das Skript konvertiert Enum-Datentypen in varchar(255) und entfernt alle on Aktualisierungsklauseln.
  • Es umschließt die SQL-Anweisungen in einem Transaktionsblock „begin and commit“.
  • Das Skript korrigiert alle maskierten Zeilenumbrüche und teilt INSERT-Anweisungen mit mehreren Zeilen in einzelne Anweisungen auf.
  • Abschließend wird die geänderte SQL-Datei in die SQLite3-Datenbank importiert.

Das obige ist der detaillierte Inhalt vonWie konvertiert man MySQL-Dump-Dateien in ein SQLite-importable-Format?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn