Hi
ich habe mir mit mysqldump einen MySQL-Dump erstellt, der die Struktur einer Datenbank enthält. Nun würde ich gerne dieses File via Java auf dem MySQL Server absetzen.
Um es einfacher zu machen arbeite ich im Moment mit einem einfachen CREATE TABLE der über mehrere Zeilen geht:
Mit der Batchfunktion eines Statements funktionierts so nicht:
Er bringt mir:
Das Problem ist nun, dass das Strukturfile riesig ist und auch ab und zu den DELIMITER wechselt. Somit ist es nicht gerade einfach schnell alle Umbrüche zu löschen und nur dort wo ein ";" ist ein Umbruch einzusetzen. Ich müsste es also würklich als SQLScript absetzen können. (ala mysql < strukturfile.sql)
Wie kann ich sowas machen?
Sollte es gar nicht möglich sein müsste ich auf:
zurückgreifen. Was ich aber nur ungern machen würde.
Hoffentlich gibt es hier eine schönere Lösung.
Greez & Danke im Voraus
jeipack
ich habe mir mit mysqldump einen MySQL-Dump erstellt, der die Struktur einer Datenbank enthält. Nun würde ich gerne dieses File via Java auf dem MySQL Server absetzen.
Um es einfacher zu machen arbeite ich im Moment mit einem einfachen CREATE TABLE der über mehrere Zeilen geht:
SQL:
CREATE TABLE `mytest` (
`id` int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Java:
s.addBatch("CREATE TABLE `mytest` (");
s.addBatch(" `id` int(10) unsigned NOT NULL auto_increment,");
s.addBatch(" PRIMARY KEY (`id`)");
s.addBatch(") ENGINE=MyISAM DEFAULT CHARSET=latin1;");
s.executeBatch();
Code:
java.sql.BatchUpdateException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ENGINE=MyISAM DEFAULT CHARSET=latin1' at line 1
at com.mysql.jdbc.Statement.executeBatch(Statement.java:919)
at ch.sbu.dataver.abwasser.dvimport.DatenmodelLib.batchTest(DatenmodelLib.java:148)
at ch.sbu.dataver.abwasser.dvimport.TestingMain.testCreate(TestingMain.java:38)
at ch.sbu.dataver.abwasser.dvimport.TestingMain.testRohrprofil(TestingMain.java:29)
at ch.sbu.dataver.abwasser.dvimport.TestingMain.<init>(TestingMain.java:24)
at ch.sbu.dataver.abwasser.dvimport.TestingMain.main(TestingMain.java:111)
Das Problem ist nun, dass das Strukturfile riesig ist und auch ab und zu den DELIMITER wechselt. Somit ist es nicht gerade einfach schnell alle Umbrüche zu löschen und nur dort wo ein ";" ist ein Umbruch einzusetzen. Ich müsste es also würklich als SQLScript absetzen können. (ala mysql < strukturfile.sql)
Wie kann ich sowas machen?
Sollte es gar nicht möglich sein müsste ich auf:
Java:
Runtime.getRuntime().exec("mysql < strukturfile.sql");
Hoffentlich gibt es hier eine schönere Lösung.
Greez & Danke im Voraus
jeipack
Zuletzt bearbeitet von einem Moderator: