Aufgabe 16 - ODBC
Exercise 16 - ODBC
Abschnitt betitelt „Exercise 16 - ODBC“In den bisherigen Übungen haben Sie SQL direkt im DB-Client verwendet. In realen Projekten greifen Anwendungen jedoch über standardisierte Schnittstellen auf Datenbanken zu. Eine der wichtigsten davon ist ODBC (Open Database Connectivity).
Ziel dieses Übungsblatts ist es, ODBC nicht nur theoretisch zu verstehen, sondern praktisch einzusetzen: von der Konfiguration über den Verbindungsaufbau bis zur sicheren, parametrisierten Abfrage.
Vorbereitung
Abschnitt betitelt „Vorbereitung“Stellen Sie sicher, dass Ihre Datenbankumgebung läuft (PostgreSQL mit Northwind).
Verschaffen Sie sich außerdem einen Überblick über die Datenbankobjekte:
-- PostgreSQLSELECT table_nameFROM information_schema.tablesWHERE table_schema = 'public'ORDER BY table_name;Dokumentieren Sie kurz:
- Welche Northwind-Tabellen für Kunden, Bestellungen und Produkte relevant sind.
- Welche Primär- und Fremdschlüssel in diesen Tabellen verwendet werden.
Auftrag 1 - ODBC verstehen
Abschnitt betitelt „Auftrag 1 - ODBC verstehen“1.1 Theorie
Abschnitt betitelt „1.1 Theorie“Beantworten Sie schriftlich:
- Welche Aufgabe hat ODBC und warum ist es als Standard sinnvoll?
- Was ist der Unterschied zwischen:
- ODBC Driver Manager
- ODBC Driver
- DSN (Data Source Name)
- Wann würden Sie ODBC statt eines nativen Treibers (z. B.
pgoderpsycopg2) einsetzen? - Nennen Sie einen Vorteil und einen Nachteil von ODBC im Vergleich zu nativen Treibern.
1.2 Architektur skizzieren
Abschnitt betitelt „1.2 Architektur skizzieren“Erstellen Sie eine Skizze der Kommunikationskette von der Anwendung bis zum DBMS Server.
Ergänzen Sie in Ihrer Skizze, wo Host, Port, Datenbankname, Benutzer und Passwort verwendet werden.
Auftrag 2 - DSN und Verbindung einrichten
Abschnitt betitelt „Auftrag 2 - DSN und Verbindung einrichten“2.1 DSN-Konfiguration
Abschnitt betitelt „2.1 DSN-Konfiguration“Richten Sie einen ODBC-DSN für Ihre Northwind-Datenbank ein (PostgreSQL).
Vorgehen nach Betriebssystem:
Windows
Abschnitt betitelt „Windows“- PostgreSQL-ODBC-Treiber herunterladen und installieren:
- https://odbc.postgresql.org/
- Nehmen Sie die neueste stabile Version und wählen Sie die Architektur passend zu Ihrer Office-/Tool-Installation (in der Regel
x64). - Typische Datei für 64-Bit:
psqlodbc_x64.msi. - Nur bei 32-Bit-Umgebungen:
psqlodbc_x86.msi.
- ODBC-Datenquellen (64-Bit) öffnen.
- System-DSN oder Benutzer-DSN anlegen.
Hinweis: unixODBC funktioniert in diesem Kontext mit Excel unter macOS nicht zuverlässig. Deshalb wird auf macOS das Actual ODBC Pack verwendet; für Apple Silicon muss zusätzlich der iODBC Administrator installiert werden, um die Datenquelle für Excel bzw. Word zugänglich zu machen.
Wichtig: Die kostenlose Version des Actual ODBC Pack liefert pro Abfrage maximal 3 Datensätze zurück.
-
Actual ODBC Pack herunterladen und installieren:
-
Den iODBC Administrator (Apple Silicon) installieren.
- Downloads: https://www.iodbc.org/dataspace/doc/iodbc/wiki/iodbcWiki/Downloads
- Direktlink für aktuelle macOS-Versionen: https://github.com/openlink/iODBC/releases/download/v3.52.16/iODBC-SDK-3.52.16-macOS11.dmg
-
Den iODBC Administrator öffnen und prüfen, ob dort ein PostgreSQL-Treiber auswählbar ist.
-
Im iODBC Administrator einen System DSN für PostgreSQL anlegen. Dabei darauf achten, dass die Verbindungsparameter korrekt eingetragen werden (Host, Port, Datenbankname, Benutzer). Als Host statt
localhost127.0.0.1verwenden, dalocalhostmanchmal als IPv6-Adresse aufgelöst wird. -
Referenzen:
- Actual ODBC Pack: https://actualtechnologies.cachefly.net/Actual_ODBC_Pack.dmg
- PostgreSQL-ODBC-Treiber: https://odbc.postgresql.org/
- iODBC Downloads: https://www.iodbc.org/dataspace/doc/iodbc/wiki/iodbcWiki/Downloads
Linux (unixODBC)
Abschnitt betitelt „Linux (unixODBC)“- Driver-Manager + Treiber installieren:
Linux (passende Distribution wählen):
Debian/Ubuntu:
sudo apt updatesudo apt install unixodbc odbc-postgresqlArch Linux:
sudo pacman -Syusudo pacman -S unixodbc postgresql-libsOptional (AUR, falls psqlodbc nicht im Standard-Repo vorhanden ist):
yay -S psqlodbc- Installation prüfen:
odbcinst -jodbcinst -q -d- Falls kein PostgreSQL-Treiber gelistet ist (oder
odbcinst.inileer ist), Treiber manuell in der vonodbcinst -jangezeigten Datei eintragen.
Beispiel für Linux (/etc/odbcinst.ini):
[PostgreSQL Unicode]Description=PostgreSQL ODBC driver (Unicode)Driver=/usr/lib/psqlodbcw.soSetup=/usr/lib/psqlodbcw.soFileUsage=1- Danach erneut prüfen:
odbcinst -q -dFalls die Datei psqlodbcw.so nicht existiert, echten Pfad suchen:
Linux:
find /usr -name 'psqlodbc*.so' 2>/dev/null- DSN in
~/.odbc.ini(User) oder/etc/odbc.ini(System) anlegen. - Referenzen:
- PostgreSQL-ODBC-Treiber: https://odbc.postgresql.org/
- unixODBC: https://www.unixodbc.org/
- Arch Wiki ODBC (Linux): https://wiki.archlinux.org/title/ODBC
Ihr DSN soll mindestens enthalten:
- DSN-Name (z. B.
northwind_odbc) - Treiber
- Host
- Port
- Datenbankname
- Benutzer
Beispiel für Linux in ~/.odbc.ini (User-DSN):
[northwind_odbc]Driver=PostgreSQL UnicodeServername=localhostPort=5432Database=northwindUsername=studentPassword=SSLmode=preferHinweise:
- Der Wert bei
Drivermuss exakt zu einem installierten Treibernamen passen (prüfen mitodbcinst -q -d). - Lassen Sie
Passwordnach Möglichkeit leer und geben Sie es erst beim Verbindungsaufbau ein. - Für Linux kann dieselbe Struktur als System-DSN auch in
/etc/odbc.iniverwendet werden.
2.2 Verbindung testen
Abschnitt betitelt „2.2 Verbindung testen“Testen Sie die Verbindung mit einem ODBC-fähigen Tool Ihrer Wahl.
Windows
Abschnitt betitelt „Windows“- Wenn verfügbar, im ODBC Data Source Administrator “Test Connection” ausführen.
- Danach mit Excel (Daten abrufen -> Aus ODBC) oder DBeaver testen.
- Verbindung direkt in Excel testen:
- Excel -> Daten abrufen -> Aus Datenbank
- Danach im iODBC Data Source Chooser auf System DSN wechseln und den DSN auswählen.
- Alternativ mit DBeaver testen.
- Zuerst per Kommandozeile testen:
isql -v northwind_odbc- Danach mit GUI-Tool testen:
- DBeaver oder LibreOffice Calc/Base
Führen Sie anschließend diese Abfragen aus und dokumentieren Sie das Ergebnis (z. B. Screenshot oder Protokoll):
SELECT COUNT(*) AS anzahl_kunden FROM customers;SELECT COUNT(*) AS anzahl_bestellungen FROM orders;Wenn eine Abfrage fehlschlägt:
- Notieren Sie die Fehlermeldung.
- Beschreiben Sie, ob das Problem am Treiber, am DSN oder an den Credentials lag.
Auftrag 3 - ODBC mit Office-Tools nutzen
Abschnitt betitelt „Auftrag 3 - ODBC mit Office-Tools nutzen“Greifen Sie mit Excel/Word oder LibreOffice per ODBC auf die Northwind-Datenbank zu.
Motivation: In der Praxis wird ODBC oft genau in folgenden Situationen genutzt:
- Excel-Szenario (Analyse): Die Vertriebsleitung möchte kurzfristig wissen, aus welchen Ländern die meisten aktiven Kundinnen und Kunden kommen. Statt Daten manuell zu exportieren, wird eine ODBC-Verbindung in Excel genutzt, um die Daten direkt aus PostgreSQL zu laden, zu filtern und als Pivot-Auswertung bereitzustellen.
- Word-Szenario (Kommunikation): Das Backoffice soll personalisierte Informationsschreiben an ausgewählte Kundinnen und Kunden senden (z. B. neue Lieferbedingungen nach Region). Über eine ODBC-Datenquelle in Word werden Empfängerdaten direkt aus der Datenbank geladen und als Serienbrief erzeugt.
Die folgenden Teilaufgaben setzen genau diese beiden Szenarien um.
Hinweis zur Plattform:
- Windows: Excel und Word können direkt mit ODBC genutzt werden.
- macOS: Excel kann mit ODBC genutzt werden; wegen der Begrenzung der kostenlosen Actual-ODBC-Version auf 3 Datensätze pro Abfrage sollten Sie zum Testen bewusst kleine Ergebnismengen verwenden oder eine lizenzierte Version einsetzen. Für Serienbriefe nutzen Sie Word mit direkter ODBC-Datenquelle oder alternativ LibreOffice Writer mit ODBC.
- Linux: Nutzen Sie LibreOffice Calc/Base für ODBC-Zugriff; für Serienbriefe verwenden Sie LibreOffice Writer mit ODBC-Datenquelle.
3.1 Excel oder LibreOffice Calc: Datenimport per ODBC
Abschnitt betitelt „3.1 Excel oder LibreOffice Calc: Datenimport per ODBC“Stellen Sie in Excel oder LibreOffice Calc eine ODBC-Verbindung zu Ihrem DSN her und importieren Sie Daten aus der Tabelle customers.
So binden Sie die Datenquelle in Excel ein (kurz):
- Excel öffnen und zu Daten wechseln.
- In der deutschen Excel-Version: Daten -> Daten abrufen -> Aus Datenbank wählen.
- Im anschließend geöffneten iODBC Data Source Chooser auf System DSN wechseln und dort Ihren DSN (z. B.
northwind_odbc) auswählen. - Falls abgefragt, Benutzername/Passwort eingeben.
- Im Navigator die Tabelle
customerswählen oder eine SQL-Abfrage angeben. - Mit Laden (oder Transformieren) bestätigen.
- Die geladenen Daten mit Aktualisieren (Refresh) neu einlesen.
Hinweis für macOS mit kostenloser Actual-ODBC-Version:
- Pro Abfrage werden maximal 3 Datensätze zurückgegeben.
- Für vollständige Auswertungen (z. B. belastbare Pivot-Analysen) ist eine lizenzierte Version erforderlich.
Aufgaben:
- Importieren Sie mindestens die Spalten
customer_id,company_name,country. - Filtern Sie in Excel/Calc nach einem Land Ihrer Wahl.
- Ermitteln Sie die Anzahl der Kunden pro Land (Pivot-Tabelle oder Gruppierung).
- Aktualisieren Sie die Abfrage (Refresh) und dokumentieren Sie, was passiert.
3.2 Word oder LibreOffice Writer: ODBC als Datenquelle
Abschnitt betitelt „3.2 Word oder LibreOffice Writer: ODBC als Datenquelle“Verwenden Sie Word oder LibreOffice Writer mit ODBC-Datenquelle (z. B. Serienbriefempfänger aus customers).
macOS-Hinweis: Wenn direkte ODBC-Anbindung in Word nicht möglich ist, ist der einfachste Weg über Excel: Daten in Excel per ODBC aus PostgreSQL laden und anschließend in Word als Datenquelle für den Serienbrief verwenden.
Linux-Alternative: Wenn Word nicht verfügbar ist, verwenden Sie LibreOffice Writer mit ODBC-Datenquelle.
Aufgaben:
- Binden Sie die Tabelle
customersals Empfängerliste ein. - Erstellen Sie ein kurzes Seriendokument mit mindestens drei Feldern (z. B. Firmenname, Kontaktperson, Land).
- Filtern Sie auf ein Land oder eine Region.
- Erzeugen Sie mindestens 3 individualisierte Ausgaben (Vorschau reicht).
3.3 Fehlerdiagnose und Reproduzierbarkeit
Abschnitt betitelt „3.3 Fehlerdiagnose und Reproduzierbarkeit“Untersuchen Sie typische ODBC-Probleme systematisch und dokumentieren Sie Ihre Lösungsschritte.
Aufgaben:
- Erzeugen Sie gezielt einen Fehlerfall (z. B. falscher DSN-Name, falscher Port oder falscher Benutzer) und notieren Sie die genaue Fehlermeldung.
- Beheben Sie den Fehler und dokumentieren Sie die Änderung, die zur erfolgreichen Verbindung geführt hat.
- Erstellen Sie eine kurze Checkliste (5-7 Punkte), mit der ein Mitschüler die gleiche Verbindung reproduzierbar einrichten kann.
Auftrag 4 - Sicherheit und Robustheit im Office-Zugriff
Abschnitt betitelt „Auftrag 4 - Sicherheit und Robustheit im Office-Zugriff“4.1 Sichere Konfiguration
Abschnitt betitelt „4.1 Sichere Konfiguration“Setzen Sie für Ihren ODBC-Zugriff folgende Sicherheitsmaßnahmen um und dokumentieren Sie diese:
- Verwenden Sie einen DB-Benutzer mit möglichst wenigen Rechten (nur read-only für diese Übung).
- Speichern Sie keine Klartext-Passwörter in geteilten Dateien.
- Dokumentieren Sie, welche Datenquelle verwendet wurde (DSN-Name), ohne sensible Zugangsdaten offenzulegen.
Beantworten Sie zusätzlich diese Frage schriftlich:
- Wo speichert ein DSN das Passwort auf Ihrem Betriebssystem (Windows, macOS oder Linux), und warum ist das sicherheitsrelevant?
Auftrag 5 - Vergleich und Reflexion
Abschnitt betitelt „Auftrag 5 - Vergleich und Reflexion“Beantworten Sie schriftlich:
- Welche Unterschiede haben Sie zwischen ODBC und dem direkten Arbeiten im SQL-Client wahrgenommen?
- Für welche Projektszenarien würden Sie ODBC empfehlen?
- Für welche Szenarien wären native Treiber vermutlich die bessere Wahl?
- Welche Rolle spielen Connection-Strings/DSNs in Bezug auf Portabilität und Wartbarkeit?
Geben Sie ab:
- Ihre schriftlichen Antworten (Theorie + Reflexion)
- DSN-Konfiguration in dokumentierter Form (ohne Klartext-Passwort)
- Office-Artefakte:
- Tabellen-Artefakt mit ODBC-Import und Auswertung (Excel oder LibreOffice Calc)
- Serienbrief-Artefakt (Word oder LibreOffice Writer mit direkter ODBC-Datenquelle)
- Kurze Ergebnisdokumentation Ihrer Testläufe inkl. Fehleranalyse