2016-06-30 11 views
1

Ich habe eine Derby-Datenbank in "D:/Dev/Arbeitsbereiche/WorkspacePro/Schule-FinMa/Schule-Finma". Ich möchte es in einen Ordner "E: /" exportieren. Also ich führe das aus:Export Derby db als SQL-Datei

Aber nichts passiert, es ist wie wenn dieser Code nicht existiert.

Ich möchte eine Möglichkeit zum Exportieren der db in einzelne .SQL-Datei, die alle DB-Generation Code + Daten enthält. Wie kann ich das von innen Java tun?

Das Projekt (in Eclipse) haben derbytools.jar importiert.

+0

Funktioniert der gleiche Befehl von der Befehlszeile? Lesen Sie die Ausgabe- und Fehlerströme des Prozesses? Gibt es Fehler? – vanje

+0

dblook exportiert nur Ihre "schema" - Bündel oder 'CREATE TABLE',' CREATE INDEX', 'CREATE VIEW' usw. - nicht die Datenbanktabellen selbst. Es klingt, als würdest du gerne eine ** Sicherung ** deiner Datenbank machen? –

+0

: vanje: es gibt keinen Fehler, keine Ausgabe, nichts. Ich habe diesen Befehl in cmd verwendet und es funktioniert: dblook -d 'jdbc: derby: D:/Dev/Arbeitsbereiche/workspacePro/School-FinMa/Schule-Finma' -o 'myDB_DDL.sql' Aber ich möchte die Anwendung (Benutzer) das kann ich nicht von der Kommandozeile aus tun. – usertest

Antwort

0

Wenn Sie einen neuen Unterprozess starten und es nicht funktioniert, sollten Sie die Ausgabe- und Fehlerströme ausgeben. Sie haben gesagt, dass es keine Ausgabe gibt, aber ich denke, Sie haben den Ausgabestream des Prozesses nicht erhalten.

Wenn Sie einen Java-Unterprozess ausführen, sollten Sie den Klassenpfad wie in der Befehlszeile hinzufügen. In diesem Fall sollten Sie derby.jar und derbytools.jar hinzufügen. Für eine Netzwerkverbindung benötigen Sie auch derbyclient.jar.

Sie verwenden Windows. Verwenden Sie keine einfachen Anführungszeichen.

Hier ist ein einfaches Beispiel, das den Ausgabe- und Fehlerdatenstrom an die Konsole ausgibt. Ohne einen Fehler gibt es keine Ausgabe. Aber versuchen Sie es mit einfachen Anführungszeichen, Sie sehen eine Fehlermeldung. In diesem Beispiel befinden sich die Derby-JARs unter: e:\derby\lib.

public static void copyStream(InputStream in, OutputStream out) throws IOException { 
    final byte[] buffer = new byte[1024]; 
    int bytesRead = 0; 
    while((bytesRead = in.read(buffer)) != -1) { 
    out.write(buffer, 0, bytesRead); 
    } 
} 

public static void main(String[] args) throws IOException, InterruptedException { 
    Process process = Runtime.getRuntime().exec( 
    "java -cp e:\\derby\\lib\\derby.jar;e:\\derby\\lib\\derbyclient.jar;e:\\derby\\lib\\derbytools.jar org.apache.derby.tools.dblook -d jdbc:derby:D:/Dev/workspaces/workspacePro/School-FinMa/school-finma -o E:/myDB_DDL.sql"); 
    final int exitValue = process.waitFor(); 
    System.out.println("Exit value: " + exitValue); 

    System.out.println("Outputstream: "); 
    copyStream(process.getInputStream(), System.out); 

    System.out.println("Errorstream: "); 
    copyStream(process.getErrorStream(), System.out); 
} 
+0

Danke. Aber keine Daten sind in der Sicherung vorhanden, nur das Schema. –