Maison > base de données > tutoriel mysql > Comment puis-je migrer facilement ma base de données SQLite3 vers MySQL ?

Comment puis-je migrer facilement ma base de données SQLite3 vers MySQL ?

Barbara Streisand
Libérer: 2024-12-08 22:45:12
original
939 Les gens l'ont consulté

How Can I Easily Migrate My SQLite3 Database to MySQL?

Migration rapide et facile de SQLite3 vers MySQL

Si vous recherchez une approche simple pour migrer votre base de données SQLite3 vers MySQL, vous n'êtes pas seul. Tenter de convertir manuellement des données conduit souvent à une incertitude quant à l'exactitude des données importées. Bien qu'il n'existe pas de bibliothèque établie pour cette conversion spécifique, nous pouvons fournir des conseils basés sur les différences entre les deux formats de fichiers.

Différences de syntaxe

  • SQLite3 utilise "BEGIN TRANSACTION" et "COMMIT", qui sont omis dans MySQL.
  • MySQL nécessite des guillemets doubles au lieu de guillemets simples dans définitions de schéma.
  • MySQL utilise des guillemets simples pour les chaînes dans les clauses "INSERT INTO", contrairement aux guillemets doubles de SQLite3.
  • Les chaînes d'échappement diffèrent entre les deux systèmes.
  • MySQL utilise 1 et 0 pour les booléens, tandis que SQLite3 utilise 't' et 'f.'
  • La fonctionnalité d'incrémentation automatique est nommée "AUTOINCREMENT" dans SQLite3 et "AUTO_INCREMENT" dans MySQL.

Script Perl pour la migration de données

Nous proposons un script Perl modifié qui corrige ces différences et a été testé avec succès sur des ensembles de données spécifiques. Cependant, vous devrez peut-être le personnaliser pour l'aligner sur vos données spécifiques :

#! /usr/bin/perl

while ($line = <>){
    if (($line !~  /BEGIN TRANSACTION/) &amp;&amp; ($line !~ /COMMIT/) &amp;&amp; ($line !~ /sqlite_sequence/) &amp;&amp; ($line !~ /CREATE UNIQUE INDEX/)){
        
        if ($line =~ /CREATE TABLE \&quot;([a-z_]*)\&quot;(.*)/i){
            $name = ;
            $sub = ;
            $sub =~ s/\&quot;//g;
            $line = &quot;DROP TABLE IF EXISTS $name;\nCREATE TABLE IF NOT EXISTS $name$sub\n&quot;;
        }
        elsif ($line =~ /INSERT INTO \&quot;([a-z_]*)\&quot;(.*)/i){
            $line = &quot;INSERT INTO \n&quot;;
            $line =~ s/\&quot;/\\&quot;/g;
            $line =~ s/\&quot;/\'/g;
        }else{
            $line =~ s/\'\'/\\'/g;
        }
        $line =~ s/([^\'])\'t\'(.)/THIS_IS_TRUE/g;
        $line =~ s/THIS_IS_TRUE/1/g;
        $line =~ s/([^\'])\'f\'(.)/THIS_IS_FALSE/g;
        $line =~ s/THIS_IS_FALSE/0/g;
        $line =~ s/AUTOINCREMENT/AUTO_INCREMENT/g;
        print $line;
    }
}
Copier après la connexion

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal