Zum Inhalt springen

Aufgabe 11 - Import, Export und Konvertierung (Webshop-Export)

Zu Zen-Modus wechseln

Aufgabe 11 - Import, Export und Konvertierung (Webshop-Export)

Abschnitt betitelt „Aufgabe 11 - Import, Export und Konvertierung (Webshop-Export)“

In dieser Übung wandern Daten zwischen Systemen: Export und Import mit COPY, das Beheben typischer CSV-Tücken und die Konvertierung von verschachteltem JSON in flache CSV-Zeilen (siehe Kapitel 6 - Integration von Informationssystemen). Im Expertenteil entsteht eine kleine ETL-Kette mit Datenbereinigung.

  • Sie exportieren und importieren Tabellen mit COPY.
  • Sie erkennen und beheben CSV-Probleme (Trennzeichen, Kodierung, Datum).
  • Sie konvertieren verschachteltes JSON per Skript in flache CSV.
  • Sie bauen eine kleine ETL-Kette mit Validierung und Bereinigung.
  • Reproduktion: Daten exportieren und importieren (Teil A).
  • Reorganisation und Transfer: CSV bereinigen und JSON konvertieren (Teile B und C).
  • Reflexion, Problemlösung und Urteilsbildung: eine ETL-Kette entwerfen und begründen (Teil D).

Die Übung ist auf etwa zwei bis drei Stunden ausgelegt. Teil D ist der Expertenteil.

CREATE TABLE kunden (
id INT PRIMARY KEY,
name VARCHAR(50),
ort VARCHAR(50),
land VARCHAR(30)
);
INSERT INTO kunden VALUES
(1, 'Andrea Hofer', 'Villach', 'AT'),
(2, 'Bernd Gruber', 'Graz', 'AT'),
(3, 'Chris Meier', 'München', 'DE');
  1. Exportieren Sie die Tabelle kunden als CSV mit Kopfzeile nach /tmp/kunden.csv.
  2. Legen Sie eine leere Tabelle kunden_kopie mit gleicher Struktur an und importieren Sie die CSV hinein.
  3. Exportieren Sie nur die österreichischen Kunden über COPY (SELECT ...).

Gegeben ist diese Import-Datei fremd.csv (aus einem anderen System):

id;name;ort;umsatz
4;"Meier, Sophie";Klagenfurt;1.250,00
5;Tom O'Brien;Wien;980,50
  1. Nennen Sie mindestens drei Unterschiede zum PostgreSQL-Standard-CSV (Trennzeichen, Dezimalzeichen, Textbegrenzung).
  2. Passen Sie die COPY-Optionen so an (bzw. beschreiben Sie die nötige Vorverarbeitung), dass die Datei korrekt eingelesen wird. Achten Sie besonders auf den Wert "Meier, Sophie" mit eingebettetem Komma.

Gegeben ist eine Datei bestellungen.json mit verschachtelten Objekten:

[
{ "id": 1001, "created_at": "2026-03-01T09:12:00Z",
"customer": { "name": "Andrea Hofer" }, "amount_cents": 4990 },
{ "id": 1002, "created_at": "2026-03-02T14:03:00Z",
"customer": { "name": "Bernd Gruber" }, "amount_cents": 12500 }
]

Schreiben Sie ein Skript, das daraus eine flache CSV mit den Spalten id, datum, kunde, betrag erzeugt. Dabei soll aus dem Zeitstempel nur das Datum werden und aus amount_cents der Betrag in Euro (mit zwei Nachkommastellen).

Bauen Sie eine durchgängige Kette aus drei Schritten und dokumentieren Sie jeden:

  1. Extract: Lesen Sie bestellungen.json ein.
  2. Transform: Vereinheitlichen Sie das Datum, rechnen Sie Cent in Euro um und bereinigen Sie die Daten: Verwerfen oder markieren Sie Datensätze mit fehlendem Kundennamen, negativem Betrag oder Datum in der Zukunft. Validieren Sie vor der Weiterverarbeitung gegen eine einfache Regelprüfung.
  3. Load: Importieren Sie das Ergebnis in eine Tabelle bestellungen und verknüpfen Sie es per JOIN über den Namen mit kunden.
  4. Urteil: Erklären Sie in drei bis vier Sätzen, an welcher Stelle Ihrer Kette „garbage in, garbage out” droht und wie die Validierung das verhindert. Warum ist die Verknüpfung über den Namen fehleranfällig, und was wäre besser?
  1. Wozu dienen die Optionen FORMAT csv und HEADER bei COPY?
  2. Nennen Sie zwei typische Probleme beim Einlesen fremder CSV-Dateien.
  3. Was bedeutet „Konvertierung ändert die Form, nicht die Bedeutung”?
  4. Wofür stehen die drei Buchstaben in ETL?
  5. Warum wird ein Dokument erst validiert und dann verarbeitet?
  • Die Datei aufgabe11_import.sql mit allen COPY-Anweisungen.
  • Das Konvertierungs-/ETL-Skript und die erzeugte CSV.

HTL Villach, Schuljahr 2026-2027,
https://www.htl-villach.at