TP 3.02 — ODBC et migration Access → PostgreSQL
Lier MS Access à PostgreSQL via ODBC, vérifier que les données circulent dans les deux sens, et migrer une base Access complète vers PostgreSQL sans casser les formulaires — les étapes expliquées.
Objectif du TP : comprendre concrètement comment fonctionne ODBC — vu au cours 3.02 — en établissant un lien réel entre deux systèmes, puis en migrant une base Access vers PostgreSQL.
Le TP se déroule en trois parties d'une demi-heure : les requêtes LaRaquette sous PostgreSQL, la liaison Access ↔ PostgreSQL sous Windows, et la migration d'une enveloppe Access complète. Il est à faire impérativement sous Windows pour la partie ODBC.
Le fil conducteur
Dans tout le TP, Access est le client (front-end : formulaires, états) et PostgreSQL est le serveur (back-end : les données). Le pilote ODBC utilisé s'appelle PostgreSQL Unicode.
1. Le club LaRaquette (½ h)
On reprend les tables du TD (terrain, abonne, creneau, reservation) et on teste — ou finit — les requêtes vues en TD, en particulier :
- les id des clients qui ont réservé plusieurs sports ;
- les créneaux disponibles le 16/09 avec la salle associée ;
- l'identifiant de l'abonné (des abonnés si égalité) qui a parrainé le plus de monde.
Ces trois requêtes sont corrigées et expliquées sur la page du TD 3.02 — questions 4, 5 et 6.
Complétez vos données pour permettre des tests pertinents : une requête « qui a parrainé le plus de monde » ne se teste pas sérieusement sur deux abonnés. Prévoyez plusieurs parrains, des égalités, des réservations sur plusieurs sports, et quelques réservations non utilisées.
2. ODBC : lier Access à PostgreSQL (½ h)
La connexion de MS Access à PostgreSQL se fait en deux étapes : déclarer la source de données côté Windows, puis créer les tables liées côté Access.
Étape 1 — Configurer une source de données (DSN) utilisateur
Le DSN (Data Source Name) est la fiche d'identité de la connexion : quel pilote, quel serveur, quelle base. Sous Windows :
Démarrer / Panneau de configuration / Système et sécurité
/ Outils d'administration / Sources de données ODBC (64 bits)Créer un nouveau USER DSN avec le pilote PostgreSQL Unicode, avec :
- serveur :
psqlserv - base :
but2
64 bits, pas 32
Il existe deux outils ODBC sous Windows (32 et 64 bits). Access moderne est en 64 bits : il ne voit que les DSN créés dans « Sources de données ODBC (64 bits) ». Un DSN créé dans la mauvaise version est invisible, et le message d'erreur ne le dit pas.
Étape 2 — Créer la base Access et les tables liées
Créer une base Access laraquette.accdb. Une fois Access lancé :
Données externes / Nouvelle source / A partir d'autres sources / BDD ODBC / Lier la
table — et choisir la table abonne sous PostgreSQL.
Impératif : lors de la sélection de la table, choisir impérativement une clé. Sans clé primaire connue d'Access, les tables liées sont en lecture seule — impossible de faire les mises à jour.
De la même manière, lier les tables terrain, creneau et reservation.
Sous Access, saisir un nouvel abonné, puis vérifier sous PostgreSQL (psql,
SELECT * FROM abonne ORDER BY ano DESC LIMIT 1;) que la ligne est bien arrivée : la
boucle client → serveur fonctionne.
Étape 3 — Les états Access
Avec l'assistant État, créer deux états de type Tabulaire :
- la liste des abonnés triés par nom ascendant — 5 colonnes : tout sauf la clé et le parrain ;
- les réservations triées par date — 5 colonnes : jour, heure, nom, prénom, Tnom.
Le point remarquable : ces états s'appuient sur des données hébergées par PostgreSQL. Access ne fait qu'afficher — toute la donnée est côté serveur.
Étape 4 — La jointure inter-SGBD
La question finale de cette partie : serait-il possible de faire une jointure entre une table Access et une table PostgreSQL ? Une requête qui utiliserait des tables de deux SGBD simultanément.
Testez — et ça marche : Access exécute la requête côté client, lit la table locale Access et la table liée (donc interroge PostgreSQL par ODBC en coulisses), et fait la jointure lui-même. C'est la démonstration complète du cours : le client ne sait plus où sont les données, et il n'a pas besoin de le savoir.
3. Migration d'une base Access vers PostgreSQL (½ h)
L'enveloppe Access exemple.mdb contient quelques tables, formulaires et états. Objectif :
migrer toutes les données sur PostgreSQL sans rien casser — les formulaires et états
doivent continuer de fonctionner.
Exporter toutes les tables vers PostgreSQL via le lien ODBC.
Supprimer les tables initiales (les données ne doivent plus vivre que côté serveur).
Renommer chacun des liens avec le nom initial de la table. C'est l'étape que l'on oublie : les formulaires et états s'appuient sur le nom des tables — pour qu'ils fonctionnent encore, les noms ne doivent pas avoir changé.
À la fin, l'enveloppe Access ne contient plus que des liens ODBC externes, sans aucune donnée interne — mais ses formulaires et états fonctionnent toujours. C'est exactement l'architecture front-end / back-end du cours : le front-end Access est conservé, les données ont déménagé chez PostgreSQL.
La checklist de fin de TP
- Un DSN utilisateur « PostgreSQL Unicode » vers
psqlserv/but2; - les quatre tables LaRaquette liées, avec clé choisie (mises à jour possibles) ;
- une insertion faite sous Access vérifiée sous PostgreSQL ;
- deux états tabulaires fonctionnels ;
- une jointure table Access × table PostgreSQL qui s'exécute ;
exemple.mdbentièrement migré : plus de données internes, formulaires et états OK.
tp-odbc-migration.pdf
TP 3.02 — Client-serveur : ODBC et migration · 2 pages
Chargement du document…
Dernière mise à jour le
TP 3.01 — Premiers pas avec PostgreSQL
Prendre en main une base PostgreSQL : se connecter avec psql, écrire un script SQL ré-exécutable, insérer des données et répondre à neuf requêtes — corrigées et expliquées une par une.
TP 3.03 — JDBC avancé
Rechercher, Lister, Speed1 → Speed4 et MonPSQL : requêtes pré-compilées, traitements par lots, méta-base et un mini-client psql — codés, exécutés et mesurés, avec les sorties réelles.