# Java, Postgres und dump.



## Camino (5. Nov 2008)

Hallo,

ich entwickle gerade eine Swing-Anwendung, die mit einer PostgreSQL-Datenbank verbunden ist. Jetzt habe ich eine Frage: Wie kann ich aus der Java-Anwendung die Daten (oder auch zusätzlich die DB-Struktur) speichern/sichern? Entweder automatisch oder manuell per Knopfdruck? Es gibt wohl den Befehl pg_dump. Aber wie kann ich den in Java verwenden? Oder gibt es andere (bessere) Möglichkeiten, die Daten zu sichern? So, dass sie evtl. auch wieder in die Datenbank eingelesen werden können. Ist PostgreSQL OK, oder empfehlt ihr mir eine andere Datenbank?

Vielen Dank schonmal für eure Hilfe
Camino


----------



## musiKk (5. Nov 2008)

Wenn du aus Java ein externes Programm aufrufen möchtest, kannst du den ProcessBuilder verwenden. Darüber könntest du pg_dump anwerfen. pg_dump dürfte auf jeden Fall die einfachste Variante sein. Da authentifiziert man sich nur und bekommt den Inhalt der gewünschten Datenbanken als ausführbares SQL.

Andernfalls könntest du noch über Connection.getMetaData() die Metadaten der Datenbank abrufen. Das ist relativ einfach aufgebaut finde ich, aber ich vermute, dass es etwas aufwändig wird. Dafür wärst du dann aber auch flexibel bis ins Letzte.

An PostgreSQL ist sicher nichts auszusetzen. Ich bin kein starker Datenbank-Nutzer, aber verwende wenn, dann PostgreSQL (insofern meine Aussage natürlich etwas parteiisch ist ).


----------



## Camino (5. Nov 2008)

Vielen Dank für deine Antwort.



			
				musiKk hat gesagt.:
			
		

> Wenn du aus Java ein externes Programm aufrufen möchtest, kannst du den ProcessBuilder verwenden. Darüber könntest du pg_dump anwerfen. pg_dump dürfte auf jeden Fall die einfachste Variante sein. Da authentifiziert man sich nur und bekommt den Inhalt der gewünschten Datenbanken als ausführbares SQL.


Das werde ich mir mal genauer anschauen. Als automatische oder manuelle Datensicherung (z.B. tägliche Speicherung) direkt aus der Java-Anwendung heraus scheint mir das ziemlich sinnvoll. Vor allem auch die Möglichkeit, das dann notfalls auch wieder einzuspielen.



> Andernfalls könntest du noch über Connection.getMetaData() die Metadaten der Datenbank abrufen. Das ist relativ einfach aufgebaut finde ich, aber ich vermute, dass es etwas aufwändig wird. Dafür wärst du dann aber auch flexibel bis ins Letzte.


DatabaseMetaData hatte ich mir auch schon mal angeschaut. Werde das wohl noch weiter vertiefen müssen...



> An PostgreSQL ist sicher nichts auszusetzen. Ich bin kein starker Datenbank-Nutzer, aber verwende wenn, dann PostgreSQL (insofern meine Aussage natürlich etwas parteiisch ist ).


Ich hatte halt bisher meistens nur mit MySQL und ein bisschen mit Sybase zu tun. Gerade MySQL im Zusammenhang mit Internetseiten und PHP ist halt ziemlich verbreitet. Fand ich auch etwas einfacher zu verstehen, als PostgreSQL. Vor allem, wenn ich mir pgAdmin III anschaue... :cry: Aber ich bin ja gerade dabei, mich dort einzuarbeiten.

Viele Grüsse
Camino


----------

