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
Libérer: 2024-11-03 01:27:29
original
699 Les gens l'ont consulté

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal