簡體   English   中英

將Derby db導出為sql文件

[英]Export Derby db as a sql file

我在“D:/ Dev / workspaces / workspacePro / School-FinMa / school-finma”中有一個derby db。 我想將其導出到此文件夾“E:/”。 所以我運行這個:

Runtime.getRuntime().exec("java org.apache.derby.tools.dblook -d 'jdbc:derby:D:/Dev/workspaces/workspacePro/School-FinMa/school-finma' -o 'E:/myDB_DDL.sql'");

但沒有任何反應,就像這段代碼不存在一樣。

我想要一種方法將db導出到單個.sql文件,該文件包含所有數據庫生成代碼+數據。 我怎么能從Java里面做到這一點?

該項目(在eclipse中)已導入derbytools.jar。

當您啟動新的子流程並且它不起作用時,您應該輸出輸出和錯誤流。 你說沒有輸出,但我認為你沒有得到過程的輸出流。

運行Java子進程時,應該像在命令行中一樣添加類路徑。 在這種情況下,您應該添加derby.jarderbytools.jar 對於網絡連接,您也需要derbyclient.jar

您正在使用Windows。 然后不要使用單引號。

這是一個簡單的運行示例,它將輸出和錯誤流打印到控制台。 沒有錯誤就沒有輸出。 但嘗試使用單引號,您將看到一條錯誤消息。

在此示例中,Derby JAR位於: 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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM