gpt4 book ai didi

java - 将 Derby 数据库导出为 sql 文件

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:34 26 4
gpt4 key购买 nike

我在“D:/Dev/workspaces/workspacePro/School-FinMa/school-finma”中有一个 Derby 数据库。我想将其导出到此文件夹“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'");

但是什么也没有发生,就像这段代码不存在一样。

我想要一种将数据库导出到单个.sql文件的方法,其中包含所有数据库生成代码+数据。我怎样才能从 Java 内部做到这一点?

项目(在 Eclipse 中)已导入 derbytools.jar。

最佳答案

当你启动一个新的子流程并且它不起作用时,你应该输出输出和错误流。你说没有输出,但我认为你没有得到进程的输出流。

运行 Java 子进程时,您应该像在命令行中一样添加类路径。在这种情况下,您应该添加 derby.jar 和 derbytools.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);
}

关于java - 将 Derby 数据库导出为 sql 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38124517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com