T-SQL nach PL/pgSQL portieren — Prozeduren und Funktionen migrieren

Die Daten sind drüben, das Schema steht — und dann liegen da 200 Stored Procedures, die kein Werkzeug für dich übersetzt. pgloader migriert Tabellen und Daten, aber die Logik in Prozeduren, Funktionen und Triggern bleibt liegen. Das ist die Phase, die wirklich Arbeit macht: T-SQL nach PL/pgSQL portieren, Zeile für Zeile, mit Verständnis statt Suchen-und-Ersetzen. Die gute Nachricht: Der … Weiterlesen

Daten transferieren: bcp, COPY, pgloader, ETL — welche Methode wann

Daten umziehen klingt nach der einfachsten Phase der Migration: Die Tabelle steht, die Daten rein, fertig. Bis die erste größere Tabelle einen ganzen Nachmittag braucht — weil sie Zeile für Zeile per INSERT läuft statt in einem Rutsch per COPY. Wer Daten nach PostgreSQL migrieren will, hat vier Wege zur Auswahl, und die Methodenwahl entscheidet über Stunden statt Minuten. Anders … Weiterlesen

Schema-Migration SQL Server → PostgreSQL — Identity, Constraints, Defaults, Sequenzen

Eine Schema-Migration SQL Server → PostgreSQL wirkt erledigt, sobald das CREATE TABLE-Skript ohne Fehler durchläuft. Genau dann beginnt das eigentliche Problem: Die Tabelle steht, die Daten sind drin — und der erste INSERT, der eine neue ID vergeben soll, kollidiert mit einem bestehenden Schlüssel. Der Grund ist kein Tippfehler, sondern ein Mechanismus-Wechsel. Aus IDENTITY wird in PostgreSQL eine Sequenz, und die … Weiterlesen

Datentyp-Mapping SQL Server → PostgreSQL — was sauber konvertiert und was kippt

Eine Migration von SQL Server nach PostgreSQL scheitert selten am eigentlichen Kopieren der Daten. Sie scheitert an datetime, wo timestamp und timestamptz keine Geschmacksfrage sind, an bit, das kein boolean ist, und an money, das man in PostgreSQL besser gar nicht erst anfasst. Das Datentyp-Mapping SQL Server PostgreSQL entscheidet, ob die Daten sauber ankommen — oder still verfälscht werden, ohne dass eine einzige Fehlermeldung erscheint. Die … Weiterlesen

Datenqualität mit SQL prüfen — ein konfigurierbares Framework, das schlechte Daten generisch aufspürt

Schlechte Daten kündigen sich nicht an. Ein Alter von 200 Jahren, eine doppelte Kundennummer, ein Ländercode, den es nicht gibt — im Quellsystem fällt das niemandem auf. Erst wenn der ETL-Lauf die Sätze in die strikt modellierte Zielschicht schieben will, bricht der Load ab: an einem CHECK, an einem UNIQUE-Index, an einem Fremdschlüssel. Datenqualität mit SQL prüfen heißt, genau … Weiterlesen

ETL vs. ELT — woran du erkennst, welches Muster du wirklich gebaut hast

„Wir machen ETL.“ Der Satz fällt in fast jedem Daten-Team — und stimmt oft nicht. Wenn jede Transformation als Stored Procedure läuft, nachdem die Rohdaten bereits unverändert in eine Staging-Tabelle geladen wurden, dann ist das der Sache nach ELT. Das Etikett verdeckt, was wirklich passiert. Der Unterschied ETL vs. ELT entscheidet sich nicht an der Reihenfolge der Buchstaben, sondern … Weiterlesen

SQL-Konventionen // PL/pgSQL-Prozeduren, die man in zwei Jahren noch lesen kann

Wer eine Stored Procedure schreibt, schreibt sie für jemanden, der sie nicht kennt – meist für sich selbst, 18 Monate später, um 23 Uhr, während ein ETL-Lauf hängt. Lesbarkeit ist keine Kosmetik, sondern Debugging-Zeit. PostgreSQL zwingt einen zu fast nichts: Namen sind frei, Einrückung ist egal, ein RAISE EXCEPTION schluckt jeden inline-zusammengebauten Text. Genau deshalb driften Prozeduren-Sammlungen ohne Konvention innerhalb … Weiterlesen

Datenqualität in SQL Server // TRY_CONVERT für date, datetime, datetime2 und time sicher anwenden

Wer einmal eine CSV-Spalte mit gemischten Datums-Formaten in eine datetime-Spalte importieren musste, weiß: An der Typ-Konvertierung entscheidet sich, ob fehlerhafte Datumswerte auffallen oder unbemerkt in die Pipeline gelangen. SQL Server lässt einen mit style-Codes alleine, sobald das Format vom Standard abweicht — TRY_CONVERT deckt die dokumentierten style-Formate ab, für alles andere braucht es eine eigene Parsing-Strategie. Das nimmst du mit: Voraussetzung: SQL Server … Weiterlesen

Datenqualität in SQL Server // TRY_CONVERT für bit sicher anwenden — Ja/Nein-Werte konvertieren

Wer einmal eine Ja/Nein-Spalte aus einem Legacy-Export übernommen hat, kennt den Befund: Die Quelle liefert ‚J‘, ‚ON‘ oder ein schlichtes ‚x‘, und TRY_CONVERT(bit, N’J‘) quittiert die deutsche Notation mit NULL. Eingebaut versteht SQL Server beim bit-Ziel nur Integer-Strings und die Literale ‚true’/’false‘ — jede andere Yes/No-Notation braucht eine eigene Zuordnung. Auf einen Blick: Voraussetzung: TRY_CONVERT existiert seit SQL Server 2012. Die Funktion fn_convert_bit nutzt TRIM und braucht daher SQL Server 2017+ … Weiterlesen

Datenqualität in SQL Server // TRY_CONVERT für float und real sicher anwenden

Wer einmal eine Messreihe importiert hat, in der jede leere Zelle als 0 in der Zieltabelle landete, kennt die Falle: TRY_CONVERT(float, “) liefert nicht NULL, sondern 0. Der Mittelwert über die Spalte ist danach falsch, und dem Ergebnis sieht man das nicht an. Auf einen Blick: Voraussetzung: TRY_CONVERT existiert seit SQL Server 2012. Das sichere Pattern weiter unten nutzt TRIM und braucht daher SQL Server … Weiterlesen