Migration von MS Access zu PostgreSQL
Einleitung
Dieses Seminar fokussiert sich auf den Wechsel von der dateibasierten Desktop-Datenbank MS Access zu dem relationalen Client-Server-RDBMS PostgreSQL. Teilnehmer erlernen die architektonischen Unterschiede, das korrekte Mapping von Datentypen, die Übersetzung von Jet-SQL in ANSI-SQL/PL/pgSQL sowie Strategien zur Datenübernahme. Ein zentraler Schwerpunkt liegt auf der systematischen Anpassung des bestehenden VBA-Codes, um MS Access effizient, sicher und performant als Frontend für ein PostgreSQL-Backend weiterzunutzen.
Zielgruppe / Voraussetzungen
- Zielgruppe: Access-Entwickler, Datenbankadministratoren und IT-Projektleiter, die Access-Anwendungen skalieren oder ablösen möchten.
- Voraussetzung: Grundlegende Erfahrungen in der Erstellung und Verwaltung von MS Access-Datenbanken, VBA-Programmierung sowie allgemeine SQL-Kenntnisse.
Detaillierte Inhalte
Architektur- und Konzeptvergleich
- Desktop-Datenbank (JET/ACE Engine) vs. Client-Server-Architektur (PostgreSQL)
- Speichermodelle: Einzelne
.mdb/.accdb-Datei vs. PostgreSQL Data Directory - Nebenläufigkeit (Concurrency): Access File-Locking vs. PostgreSQL MVCC
- Sicherheits- und Berechtigungskonzepte
Migrationsstrategien und Werkzeuge
- Phasen der Migration (Datenstrukturen, Daten, Abfragen, Formulare/Berichte, VBA-Code)
- Architektur-Entscheidung: Komplettablösung vs. Access-Frontend mit PostgreSQL-Backend
- Evaluierung von Migrationswerkzeugen (
mdbtools, Bullzip, pgAdmin) - Installation und Konfiguration der PostgreSQL ODBC-Treiber (
psqlODBC)
Schema- und Strukturmigration
- Best Practices für Namenskonventionen (Migration zu
snake_case) - Mapping der Datentypen (
AutoWertzuSERIAL/IDENTITY,Ja/NeinzuBOOLEAN,AnlagezuBYTEA) - Übernahme von Tabellenbeziehungen und referenzieller Integrität
- Konvertierung von Gültigkeitsregeln zu PostgreSQL Check Constraints
Code-Migration: Jet-SQL zu PostgreSQL (ANSI SQL / PL/pgSQL)
- Syntaxunterschiede: Jet-SQL vs. PostgreSQL
- Platzhalter (Wildcards) anpassen:
*und?zu%und_ - String-Verkettungen:
&zu|| - Access-spezifische Funktionen ersetzen (
IIf()zuCASE,Nz()zuCOALESCE,Date()zuCURRENT_DATE) - Kreuztabellenabfragen in PostgreSQL abbilden (
tablefunc/CROSSTAB)
VBA-Code Anpassungen und Backend-Kommunikation
- Datenzugriffstechnologien: DAO vs. ADO im direkten Zusammenspiel mit PostgreSQL
- Dynamische Anpassung und Verwaltung von ODBC-Connection Strings via VBA (DSN vs. DSN-less Connections)
- Erstellung und Ausführung von Pass-Through-Abfragen per VBA (
QueryDef-Objekt) zur Serverentlastung - Aufruf von serverseitigen PostgreSQL-Funktionen und -Prozeduren (PL/pgSQL) aus VBA
- Sichere Parameterübergabe an PostgreSQL via ADO
Command-Objekte - Optimierung von Recordsets: Serverseitige vs. clientseitige Cursor (
CursorLocation) - Behandlung von ODBC- und PostgreSQL-spezifischen Fehlern in VBA (
On Error GoTo,Errors-Auflistung) - Umschreiben dynamisch generierter SQL-Strings im VBA-Code auf PostgreSQL-Syntax
- Refactoring: Auswertung, welche VBA-Geschäftslogik in performante PL/pgSQL-Prozeduren ausgelagert werden sollte
Datenübernahme und Synchronisation
- Initiale Datenmigration via CSV und performantem PostgreSQL
COPY - Datenübertragung via ODBC (
INSERT INTO ... SELECT) - Behebung von Zeichensatzproblemen (Windows-1252 nach UTF-8)
- Validierung der migrierten Datenstrukturen
MS Access als Frontend für PostgreSQL (Optimierung)
- Einbinden und Aktualisieren von Tabellen (Linked Tables) automatisiert per VBA (
TableDef) - Vermeidung des
#Gelöscht-Fehlers in Access (Primärschlüssel-Zwang undRowVersionin PostgreSQL) - Performance-Optimierung von Formularen und Listenfeldern bei großen Datenmengen
- Unterschiede im Sperrverhalten und der Transaktionssteuerung bei verknüpften PostgreSQL-Tabellen
Dauer 3 Tage