"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-08
Parcourir:697

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 :

#!/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
; alors echo "Utilisation : $0 " sortie fi chat 1 $ | grep -v 'CLÉ "' | grep -v 'CLÉ UNIQUE "' | grep -v 'CLÉ PRIMAIRE' | sed '/^SET/d' | sed 's/ non signé / /g' | sed 's/ auto_increment/ clé primaire autoincrement/g' | sed 's/ smallint([0-9]*) / entier /g' | sed 's/ tinyint([0-9]*) / entier /g' | sed 's/int([0-9]*) / entier /g' | sed 's/ jeu de caractères [^ ]* / /g' | sed 's/ enum([^)]*) / varchar(255) /g' | sed 's/ lors de la mise à jour [^,]*//g' | perl -e 'local $/;$_=;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' | perl -pe ' si (/^(INSÉRER. ?)\(/) { $a=$1 ; s/\\'\''/'\'\''/g; s/\\n/\n/g; s/\),\(/\);\n$a\(/g; } '> $1.sql chat $1.sql | sqlite3 $1.db > $1.err ERREURS=`cat $1.err | toilettes -l` si [ $ERREURS == 0 ]; alors echo "Conversion terminée sans erreur. Fichier de sortie : $1.db" rm $1.sql rm $1.err rm tmp autre echo "Des erreurs se sont produites lors de la conversion. Veuillez consulter $1.err et $1.sql pour plus de détails." fi

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 d'incrémentation automatique en incrémentation automatique 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 aux déclencheurs de mise à jour.
  • Convertit plusieurs insertions de lignes en insertions individuelles pour la compatibilité SQLite.
  • Encapsule le SQL converti dans une transaction pour des raisons de sécurité. .

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3