Nouveau : Datasets open source gratuits disponibles !Decouvrir →
🐘
Intermediaire 25 min PostgreSQL

Migrer de MySQL vers PostgreSQL

Pourquoi Migrer de MySQL vers PostgreSQL ?

La migration d'une base de données MySQL vers PostgreSQL peut être nécessaire pour plusieurs raisons :

  1. Compatibilité et Support: PostgreSQL est un projet open source avec une longue histoire et une grande communauté active, ce qui signifie qu'il reçoit des mises à jour régulières et un excellent support.

  2. Performance: PostgreSQL est souvent considéré comme plus performant que MySQL en termes de gestion des transactions et des requêtes complexes.

  3. Flexibilité et Fonctionnalités Avancées: PostgreSQL offre une variété d'extensions et de fonctionnalités avancées qui peuvent améliorer significativement les performances et la sécurité des applications.

  4. Écossystème: Bien que MySQL ait un plus grand écosystème de plugins, bibliothèques et frameworks populaires pour des langages de programmation comme PHP, Python ou Ruby, PostgreSQL offre également une variété solide d'outils et de bibliothèques.

Prerequis

Pour suivre ce tutoriel, vous aurez besoin de :

  • PostgreSQL : Installez la dernière version stable depuis le site officiel.

    sudo apt-get update
    sudo apt-get install postgresql postgresql-contrib
    
  • pgAdmin (optionnel) : Pour une interface graphique plus facile à utiliser.

    sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    sudo apt-get update
    sudo apt-get install pgadmin4
    
  • DBeaver (optionnel) : Pour une interface graphique alternative.

    wget -O - https://dbeaver.io/files/debs/dbeaver-ce-latest-stable-amd64.deb | sudo dpkg -i -
    

Concepts fondamentaux

Schema Mental Clair et Code Fonctionnel

  1. Création d'une Table

    -- Crée une table dans PostgreSQL
    CREATE TABLE users (
        id SERIAL PRIMARY KEY,
        name VARCHAR(255) NOT NULL,
        email VARCHAR(255) UNIQUE NOT NULL,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    
  2. Insertion de Données

    -- Insère des données dans la table users
    INSERT INTO users (name, email)
    VALUES ('John Doe', 'john.doe@example.com');
    
  3. Requêtes SQL

    -- Sélectionne toutes les utilisateurs
    SELECT * FROM users;
    
  4. Mises à Jour et Suppressions

    -- Met à jour un utilisateur
    UPDATE users SET email = 'john.doe.updated@example.com' WHERE id = 1;
    
    -- Supprime un utilisateur
    DELETE FROM users WHERE id = 1;
    

Mise en pratique : Projet Fil Rouge

Mini-Projet Complexe et Réaliste : Gestionnaire de Tâches

Étape 1: Création des Tables

-- Crée une table pour les utilisateurs
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Crée une table pour les tâches
CREATE TABLE tasks (
    id SERIAL PRIMARY KEY,
    user_id INTEGER REFERENCES users(id),
    title VARCHAR(255) NOT NULL,
    description TEXT,
    due_date DATE,
    completed BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Étape 2: Insertion de Données

-- Insère un utilisateur
INSERT INTO users (name, email)
VALUES ('John Doe', 'john.doe@example.com');

-- Insère des tâches pour l'utilisateur
INSERT INTO tasks (user_id, title, description, due_date)
VALUES (1, 'Task 1', 'Description of task 1', '2023-10-01');

Étape 3: Requêtes SQL

-- Sélectionne toutes les tâches de John Doe
SELECT * FROM tasks WHERE user_id = 1;

-- Met à jour la date d'échéance d'une tâche
UPDATE tasks SET due_date = '2023-10-15' WHERE id = 1;

-- Supprime une tâche
DELETE FROM tasks WHERE id = 1;

Erreurs Frequentes et Debugging

Erreur : ERROR: invalid input syntax for integer

-- Mauvais code
INSERT INTO users (name, email)
VALUES ('John Doe', 'john.doe@example.com');

-- Bonne correction
INSERT INTO users (name, email)
VALUES ('John Doe', 'john.doe@example.com');

Erreur : ERROR: column "email" of relation "users" already exists

-- Mauvais code
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Bonne correction
ALTER TABLE users ADD COLUMN email VARCHAR(255) UNIQUE NOT NULL;

Erreur : ERROR: syntax error at or near "LIMIT"

-- Mauvais code
SELECT * FROM users LIMIT 10;

-- Bonne correction
SELECT * FROM users LIMIT 10;

Pour aller plus loin

Pistes Concretes pour Approfondir

  1. Extensions PostgreSQL : Explorer des extensions comme pgcrypto pour des fonctions cryptographiques.
  2. Indexes Avancés : Découvrir comment utiliser les index composite et GIN pour améliorer les performances des requêtes.
  3. Vues et Matrices : Créer des vues complexes pour simplifier l'accès aux données.

Défi Pratique

Implémentez une fonctionnalité d'historique des modifications dans la table tasks en utilisant des triggers PostgreSQL.


Ce tutoriel couvre les principales étapes pour migrier de MySQL vers PostgreSQL, en abordant des concepts fondamentaux, des cas pratiques et des erreurs courantes. En suivant ce guide, vous devriez être en mesure de migrer avec succès une base de données MySQL vers PostgreSQL.

Besoin d'aide sur PostgreSQL ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

Quelle est la différence principale entre MySQL et PostgreSQL lors du choix d'une migration ?
MySQL est souvent considéré comme l'option plus populaire pour sa simplicité et son utilisation populaire dans les petites à moyennes entreprises. En revanche, PostgreSQL offre une meilleure robustesse et des fonctionnalités avancées telles que le support natif des tables partitionnées, la gestion des séquences de données complexes et des transactions distribuées.
Quelles sont les étapes clés à suivre pour migrer d'une base MySQL à PostgreSQL ?
La migration d'une base MySQL vers PostgreSQL implique plusieurs étapes. Commencez par créer une sauvegarde complète de votre base MySQL. Ensuite, utilisez des outils comme pgloader ou un script personnalisé pour importer les données dans PostgreSQL. Assurez-vous de tester la cohérence et la validité des données après la migration. N'oubliez pas d'ajuster les configurations et le code SQL selon les spécificités de PostgreSQL.
Quelles sont les principales fonctionnalités de PostgreSQL qui ne sont pas disponibles dans MySQL ?
PostgreSQL offre des fonctionnalités avancées telles que les tables partitionnées, la gestion complexe des séquences, le support pour les types de données géographiques et spatiaux (GIS), l'intégration avec Java et d'autres langages grâce à JDBC. Il dispose également d'une architecture robuste pour la mise en place de transactions distribuées et de fonctionnalités de sécurité renforcées.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.