Automatisch DB Stuktur ändern

Datenbank Migration (z. B. von MySQL auf PostgreSQL)
Antworten
Ciatronical
Benutzer
Beiträge: 64
Registriert: Sa 21. Aug 2010, 13:10

Automatisch DB Stuktur ändern

Beitrag von Ciatronical »

Hey All,

ich möchte dass sich die Datenbankstruktur automatisch von einer Datei ableitet.

Ein kleines Beispiel:

Ich habe in der jetzigen Programm-Version ein eine Datenbank die wie folgt aussieht:

Meine Datenbankdatei Version 1
CREATE TABLE test(
id serial,
name text
)

Jetzt kommt in der meiner Software in neues Feature hinzu. (Geburtsdatum)
Meine Datenbankdatei Version 2
CREATE TABLE test(
id serial,
name text,
bday date
)

Bisher habe ich eine Upgradescript geschrieben:
ALTER TABLE test ADD COLUMN bday date;

Den letzten Schritt möchte ich automatisieren.
PostgreSQL soll also in meine Datenbankdatei schauen und selbständig das ALTER TABLE, etc durchführen.

Ich will quasi nur eine Datei pflegen.

Geht das mit PostgreSQL? Wenn ja wie?

Dank und Gruß

Ronny

akretschmer
Erfahrener Benutzer
Beiträge: 7733
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Automatisch DB Stuktur ändern

Beitrag von akretschmer »

nicht wirklich, aber schau mal hier: https://wiki.postgresql.org/wiki/Change ... techniques
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

castorp
Erfahrener Benutzer
Beiträge: 1209
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: Automatisch DB Stuktur ändern

Beitrag von castorp »

Den letzten Schritt möchte ich automatisieren.
PostgreSQL soll also in meine Datenbankdatei schauen und selbständig das ALTER TABLE, etc durchführen.
Das wird nicht klappen. Du suchst nach einem automatisierten Diff zwischen zwei Definitionen einer Tabelle und das kann nie 100% korrekt aufgelöst werden.

Nimm mal das folgende (sehr einfache) Beispiel. Was wäre die korrekte Transformation in dem folgenden Fall:

1. Version der Tabelle:

Code: Alles auswählen

CREATE TABLE test
(
  id serial,
  name text
);
2. Version der Tabelle:

Code: Alles auswählen

CREATE TABLE test
[code]
(
  id serial,
  first_name varchar(20)
)
Du kannst zwischen den beiden folgenden Änderungen wählen:

Code: Alles auswählen

alter table test alter name type varchar(20);
alter table test rename name to first_name;

Code: Alles auswählen

alter table test 
  drop name, 
  add first_name varchar(20)
Im ersten Fall bleiben alle Daten erhalten im zweiten Fall nicht.

Du solltest bei Deinem Vorgehen bleiben und die Änderungen via Skripts machen (die in die Versionskontrolle der Anwendung gehören - das ist genauso Source Code with Java, C# oder HTML)

Schau Dir Tools wie Liquibase und Flyway diese machen das alles etwas einfacher, weil sie sich merken welche Änderungen bereits ausgeführt wurden.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

pogomips
Erfahrener Benutzer
Beiträge: 136
Registriert: Fr 18. Nov 2016, 09:55

Re: Automatisch DB Stuktur ändern

Beitrag von pogomips »

Ciatronical hat geschrieben:
Mo 2. Mär 2020, 11:56
Den letzten Schritt möchte ich automatisieren.
PostgreSQL soll also in meine Datenbankdatei schauen und selbständig das ALTER TABLE, etc durchführen.

Ich will quasi nur eine Datei pflegen.

Geht das mit PostgreSQL? Wenn ja wie?
Als Ergänzung mal eine weitere Frage:
Schreib doch bitte einfach Version 1 und Version 2 Deiner Datei hier hin. (Die Datei, die Du alleinig pflegen willst.)
Wie möchtest Du vorgeben, was da sein soll, bzw. was zu ergänzen / zu ändern ist?

Antworten