Maison >base de données >tutoriel mysql >Comment convertir un fichier SQL de vidage MySQL en base de données SQLite3 ?

Comment convertir un fichier SQL de vidage MySQL en base de données SQLite3 ?

DDD
DDDoriginal
2024-11-03 01:27:29661parcourir

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

Conversion de MySQL Dump SQL en base de données SQLite3

L'importation d'un fichier SQL de dump MySQL dans une base de données SQLite3 nécessite une conversion pour garantir la compatibilité.

Le script shell fourni offre un moyen automatisé de convertir le fichier de vidage :

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

Le script effectue les transformations suivantes :

  • Supprime les définitions de clés redondantes.
  • Définit les champs comme non signés le cas échéant.
  • Définit les champs auto_increment sur l'auto-incrémentation de clé primaire.
  • Convertit les types entiers en leurs équivalents dans SQLite (smallint, tinyint et int deviennent entiers).
  • Supprime les jeux de caractères.
  • Convertit les types d'énumération en varchar(255).
  • Supprime les références définies pour mettre à jour les déclencheurs.
  • Convertit les insertions de plusieurs lignes en insertions individuelles. pour la compatibilité SQLite.
  • Encapsule le SQL converti dans une transaction pour des raisons de sécurité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn