Idee für DB2CSV2DB

Egal welch schöne Verwaltungsoberflächen man strickt, manchmal ist es einfach angenehmer den Datenbankinhalt in den Editor zu schieben, dort zu Suchen und Ersetzen und das Ergebnis wieder in die Datenbank zu schieben. Ich denke da an einen einfachen Query-Generator, der die Tabelle als CSV in einer Textarea ausgibt und diese direkt als Update akzeptiert:

db2csv2db

weiterlesen

SQL-Datenbankänderungen testen

Manchmal dauert es ein wenig, bis man auf das Offensichtliche kommt. Ich habe hin und her überlegt, wie ich ein Update und Alter Table testen kann, ohne die Daten zu gefährden. Die Lösung ist elementarer Bestandteil einer jeden SQL-Datenbank: Eine Transaktion.

Transaktionen in PostgreSQL

begin;
alter table mytable rename column id to name;
\d mytable

weiterlesen

Probleme mit falschen Liquibase-Checksummen beheben

Liquibase ist eine nette Sache, um die Evolution von Datenbankschemata zu verwalten. Nervig wird es, wenn man während der Entwicklung ein bereits ausgeführtes Changeset noch einmal ändern muss und infolge dessen die Checksummen nicht mehr stimmen:

liquibase.exception.ValidationFailedException: Validation Failed:
1 change sets check sum
changelog.xml::changeSetId::author is now: 3:eeeedcadbc71ae018f46bd682e9132c7

Die Lösung ist recht einfach: Der betroffene Hashwert kann aus der Changelog-Tabelle von Liquibase entfernt werden:

update databasechangelog set md5sum = null where id = 'changeSetId';

Beim nächsten Update wird nun der korrekte Wert nachgetragen, ohne dass die zugehörigen Änderungsanweisungen erneut ausgeführt werden:

Updating null or out of date checksum on changeSet etc/db/changelog.xml::changeSetId::author::(Checksum: 3:...) to correct value

Große Datenmengen mit Extbase verarbeiten

Extbase ist an sich eine schöne Sache: Man kann mit relativ geringem Aufwand auch komplexe Anwendungen schreiben. Ein großes Problem ist jedoch die Effizienz. Das vollständige Auslesen von Objekten aus einer Datenbank in ein Array, um diese nachfolgend zu bearbeiten, ist speicherintensiv und merklich langsam. Möchte man einfach eine lange Liste an Logs ausgeben, fällt das besonders auf. Ich möchte hier einen eleganten Weg zeigen, wie man möglichst direkt jede Datenbankzeile in die Ausgabe schreibt. weiterlesen