mysqldump

mister-man

Mitglied
Hay,

ich suche derzeit ein Beispiel, wie ich mit Java ein MySQLdump auf einen Server einspielen kann und auch erstellen kann. Werde aber aus meinen google funden nicht ganz schlau. Hat wer vielleicht ein Beispiel oder eine gutes HowTo dafür?

Danke...
 

Evil-Devil

Top Contributor
Am einfachsten direkt den MySQL Server ansprechen. Also einen Exec Befehl.

Java:
Runtime.exec("mysql -u benutzername -ppasswort  < database_dump.sql");

Natürlich kannst du noch weitere MySQL Parameter wie die spezifische Datenbank, das Encoding etc. pp. nutzen.

Allerdings würde ich das nach Möglichkeit immer vermeiden, denn ein Dump kann je nach Größe und System sehr lange benötigen eingespielt zu werden.
 

mister-man

Mitglied
Am einfachsten direkt den MySQL Server ansprechen. Also einen Exec Befehl.

Java:
Runtime.exec("mysql -u benutzername -ppasswort  < database_dump.sql");

Natürlich kannst du noch weitere MySQL Parameter wie die spezifische Datenbank, das Encoding etc. pp. nutzen.

Allerdings würde ich das nach Möglichkeit immer vermeiden, denn ein Dump kann je nach Größe und System sehr lange benötigen eingespielt zu werden.

Die Zeit ist eher zweitrangig, es sollte möglichst schnell sein, aber es ist für ein Admintool. Sprich dies wird nur benutzt wenn alle anderen Nutzer nicht im Unternehmken sind.....

Runtime.exec?

Derzeit sende ich SQl anfragen so ab:
Java:
query = (Statement) mysql.connection.createStatement();
            query.execute("Select ......");

Wie funktioniert das exec denn?
 

Evil-Devil

Top Contributor
Ein Dump ist eine Ansammlung von SQL Anweisungen. Im Dump stehen unter anderen Table Drop, Create, Triggers, Insert, Update und alles was eben notwendig war/ist für den jeweiligen Dump. Natürlich könntest du jede Zeile einzeln parsen und einzeln abschicken, das würde aber ein sehr viel länger dauern als es direkt vom MySQL Server verarbeiten zu lassen.

Exec ruft wie die Java Doku schon schreibt das jeweilige Programm mit den übergebenen Parametern auf.

Ist also nicht sonderlich anders als würdest du den Befehl direkt auf der Unix Konsole / Windows Eingabe abschicken.

Was natürlich auch vorteilhaft ist, wenn du auf dem Host System den Dump einspielen willst, aber das eigentliche Zielsystem auf einem anderen erreichbaren Rechner ist, dann kannst du einfach mittels des Host Parameters jenes System als Ziel angeben ;)
 

Evil-Devil

Top Contributor
Wie kommt der Client denn an das Dump heran? Im schlimmsten Fall musst du einen Datei Upload nutzen und den Dump auf den Server spielen.

Ich kenne es aus unseren Tools eigentlich nur so, dass wenn jemand einen DUmp erzeugt, der direkt auf dem Server liegt auf dem er erzeugt wurde und bei Bedarf heruntergeladen werden kann. Somit kann er später direkt auf dem Server wieder eingespielt werden um einen älteren Ist-Zustand oder Abgleich-Datenbank herzustellen.

Dumps dienen in erster Linie der Sicherung und sehr einfachen Möglichkeit Datenbanken von A auf B zu übertragen.
 

mister-man

Mitglied
Der Client ist wie gesagt ein Admintool für eine Raumverwaltungssoftwrae. Das Admintool soll die Software incl Datenbank auch installieren können. Dazu muss aber die DB eingerichtet werden. Dafür wollte ich eine .sql nutzen.
Diese liegt im installer.

Eine Sicherung muss nicht unbedinkt machbar sein, da kann auch die Workbench oder PHPMyAdmin herhalten.
 

Evil-Devil

Top Contributor
Irgendwie scheint dir noch nicht ganz klar zu sein was ein MySQL Dump ist...

Liegen das Admintool und die DB später auf dem selben System? Falls nicht, dann kann dein Admintool MySQL auf dem Server gar nicht installieren. Er kann höchstens die Datenbank erzeugen. Und die notwendigen Steuerbefehle absenden. Ähnlich PhpMyAdmin und der Workbench. Wobei alle drei einen Dump einspielen können. Hierzu nutzen sie dann entsprechend den MySQL Load Data InFile Command.
MySQL :: MySQL 5.6 Reference Manual :: 13.2.6 LOAD DATA INFILE Syntax
 

mister-man

Mitglied
Genau sowas wie PHPMyAdmin leistet, möchte ich machen. Ich habe eine .sql Datei mit mehreren Tabellen und Inserts mit defaultdatren und möchte diese in eine db einspielen...
 

Ähnliche Java Themen

Neue Themen


Oben