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

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

DDD
DDDOriginal
2024-11-03 01:27:29655Durchsuche

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, die Dump-Datei zu konvertieren:

<code class="shell">#!/bin/sh
# Usage:  <dumpname>

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</code>

Das Skript führt die folgenden Transformationen durch:

  • Entfernt redundante Schlüsseldefinitionen.
  • Setzt Felder ggf. auf vorzeichenlos.
  • Setzt auto_increment-Felder auf Primärschlüssel-Autoinkrementierung.
  • Konvertiert Integer-Typen in ihre Entsprechungen in SQLite (Smallint, Tinyint und Int werden Integer).
  • Entfernt Zeichensätze.
  • Konvertiert Aufzählungstypen in varchar(255).
  • Entfernt Satzverweise auf Update-Trigger.
  • Konvertiert mehrere Zeileneinfügungen in einzelne Einfügungen für SQLite-Kompatibilität.
  • Umschließt das konvertierte SQL aus Sicherheitsgründen in eine Transaktion.

Das obige ist der detaillierte Inhalt vonWie konvertiert man eine MySQL-Dump-SQL-Datei in eine SQLite3-Datenbank?. 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