CodeGym /Kurse /SQL SELF /Überprüfung der Korrektheit von geladenen Daten

Überprüfung der Korrektheit von geladenen Daten

SQL SELF
Level 24 , Lektion 2
Verfügbar

Daten aus externen Quellen zu laden ist wie Kumpels zu einem Coup einzuladen. Du willst sicherstellen, dass alle mit der richtigen Einstellung kommen – oder in unserem Fall: im richtigen Format. Schon ein kleiner Fehler in der Datei kann zu stundenlangem Debugging, falschen Query-Ergebnissen oder einfach zu kaputten Daten in der Tabelle führen.

Manchmal schleichen sich leere Zeilen, überflüssige Leerzeichen, Duplikate oder zum Beispiel Text anstelle einer Zahl in die Datei. Und wenn dann noch das Encoding nicht passt, kann die Tabelle die Datei einfach ablehnen.

Damit das nicht passiert, ist es wichtig, die Daten schon vorher oder direkt nach dem Laden auf Korrektheit zu prüfen. Schauen wir uns jetzt an, wie das geht.

Überprüfung der Datenstruktur

  1. Vergleich der Tabellenstruktur mit den geladenen Daten

Der allererste Schritt: Checken, ob die Daten zur Struktur deiner Tabelle passen. Zum Beispiel hast du die Tabelle students erstellt, um Infos über Studierende zu speichern:

CREATE TABLE students (
    student_id SERIAL PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    birth_date DATE,
    email VARCHAR(100) UNIQUE
);

Wenn du Daten in diese Tabelle geladen hast, schau dir erstmal an, was drin steht:

SELECT * FROM students;

Die zurückgegebenen Zeilen zeigen dir alle Einträge in der Tabelle. Wenn die Struktur der CSV-Datei nicht zur Tabelle passt, bekommst du schon beim Laden Fehler. Aber selbst wenn keine Fehler kamen, heißt das noch lange nicht, dass alles perfekt ist.

  1. Überprüfung der Datentypen

Nutze die Funktionen von PostgreSQL, um den Inhalt der Spalten zu checken. Zum Beispiel:

Überprüfung auf leere Werte (NULL):

Wenn deine Tabelle Pflichtfelder mit NOT NULL hat, solltest du sicherstellen, dass sie wirklich ausgefüllt sind. Zum Beispiel:

SELECT * FROM students WHERE first_name IS NULL OR last_name IS NULL;

Überprüfung der Datenformate:

Manchmal werden Daten als Strings geladen, obwohl sie eigentlich Dates oder Zahlen sein sollten. Um das zu prüfen, nutze passende PostgreSQL-Funktionen, zum Beispiel:

SELECT * FROM students WHERE birth_date::DATE IS NULL;

Mit diesem Query siehst du die Zeilen, bei denen das Feld birth_date nicht in den Typ DATE umgewandelt werden kann.

Fehlerprüfung

  1. Suche nach Duplikaten

Doppelte Einträge sind eines der häufigsten Probleme. Angenommen, deine Daten sollen nach E-Mail-Adresse (email) eindeutig sein. Um nach Duplikaten zu suchen, benutze diesen Query:

SELECT email, COUNT(*)
FROM students
GROUP BY email
HAVING COUNT(*) > 1;

Dieser Query zeigt dir alle doppelten email und wie oft sie vorkommen. Wenn deine Spalte email als UNIQUE definiert ist, führt das Laden solcher Daten zu einem Fehler.

  1. Überprüfung auf inkorrekte Daten

Wenn du erwartest, dass das Feld birth_date nur Geburtsdaten enthält, solltest du checken, ob alle Werte im erlaubten Bereich liegen. Zum Beispiel:

SELECT * FROM students
WHERE birth_date < '1900-01-01' OR birth_date > CURRENT_DATE;

Mit diesem Query findest du Zeilen, bei denen das Geburtsdatum unrealistisch ist.

Umgang mit inkorrekten Daten

Nachdem du Probleme gefunden hast, musst du sie beheben. Lass uns anschauen, wie das geht.

  1. Löschen von inkorrekten Daten

Wenn du feststellst, dass es Zeilen mit leeren Namen gibt, kannst du sie löschen:

DELETE FROM students
WHERE first_name IS NULL OR last_name IS NULL;

Aber Vorsicht beim Löschen! Die Daten könnten wichtig sein – vielleicht ist es besser, sie zu aktualisieren statt zu löschen.

  1. Aktualisierung von Daten

Wenn du Zeilen mit fehlenden Daten findest, kannst du sie auf Basis anderer Quellen oder Annahmen aktualisieren. Beispiel:

UPDATE students
SET email = 'unknown@example.com'
WHERE email IS NULL;

Datenvisualisierung für Analyse

  1. Verwendung von Aggregatfunktionen

Manchmal ist es hilfreich, Aggregate zu berechnen, um die Daten zu prüfen. Zum Beispiel, um zu sehen, wie viele Studierende in welchem Jahr geboren wurden:

SELECT EXTRACT(YEAR FROM birth_date) AS year, COUNT(*)
FROM students
GROUP BY year
ORDER BY year;

Mit diesem Query siehst du die Verteilung nach Jahren und kannst Auffälligkeiten erkennen (z.B. wenn in einem Jahr plötzlich sehr viele Studierende auftauchen).

  1. Datenprüfung mit Constraints

Stelle sicher, dass die Daten zu den in der Tabelle gesetzten Constraints passen, zum Beispiel so:

Überprüfung auf Einzigartigkeit:

SELECT DISTINCT email
FROM students;

Wenn die Anzahl der eindeutigen Werte kleiner ist als die Gesamtzahl der Zeilen – dann hast du Duplikate.

Überprüfung von Wertebereichen:

SELECT * FROM students
WHERE LENGTH(first_name) > 50 OR LENGTH(last_name) > 50;

So stellst du sicher, dass die Namen der Studierenden nicht länger als 50 Zeichen sind.

Was tun, wenn alles schief läuft?

Manchmal sind die Daten so schlecht, dass es einfacher ist, sie komplett neu zu laden.

  1. Lösche alle Zeilen aus der Tabelle:

    TRUNCATE TABLE students;
    
  2. Korrigiere die ursprüngliche CSV-Datei mit Python, Excel oder einem anderen Tool.

  3. Lade die Daten erneut mit dem COPY-Befehl.

Praxiseinsatz

Skills in der Datenvalidierung brauchst du jedes Mal, wenn du mit externen Quellen arbeitest. Im Vorstellungsgespräch kann es gut sein, dass du einen SQL-Query schreiben sollst, um die Qualität eingehender Daten zu prüfen – das ist Standard. In echten Projekten ist es nicht anders: Daten vom Kunden oder einer anderen Abteilung kommen fast immer mit Fehlern, und du bist derjenige, der sie als Erstes sieht und fixen kann, bevor es zu Bugs kommt.

Regelmäßige Datenprüfung hält deine Datenbank sauber – und das ist keine Formsache, sondern spart wirklich Zeit, Nerven und Aufwand für das ganze Team. Wenn du also schnell checken kannst, ob die Daten okay sind, bist du schon einen Schritt näher am PostgreSQL-Meister.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION