如何运行sql脚本以便从java代码更新Derby架构?

时间:2011-05-18 09:44:54

标签: java derby

我们客户端的derby数据库安装具有不同的架构版本。例如。 Customer1具有db模式版本4.1.5.0240,Customer2具有版本4.0.1.0330。

这个想法是在安装新软件时将这些模式更新为实际版本。存在多个sql脚本以便将版本更新到下一级别。例如。 update_4.1.5.0240_to_4.3.1.0020.sql。

我正在寻找的工具/程序应该从derby数据库表中读取实际安装的版本。根据该版本,应运行相应的sql脚本,以便将模式更新到下一级别。必须重复此过程,直到找不到与实际读取版本匹配的sql脚本。

在没有任何管理员帮助的情况下,客户站点的安装应该是无头的。

1。)我更喜欢使用JDBC读取版本的java程序。但是如何从java中运行sql脚本?我应该从java调用ij命令行工具吗?

2。)有更好的选择吗?

由于 尤

2 个答案:

答案 0 :(得分:1)

您可能会发现ij.runScript方法很有用:http://db.apache.org/derby/javadoc/publishedapi/jdbc4/org/apache/derby/tools/ij.html

需要注意的一点是,在脚本中自动执行错误处理并不容易,因为在ij脚本中没有控制流(if / then / else)构造。但是如果你只需要以干净的方式执行一系列DDL操作,那么ij.runScript是一种非常好的技术。

答案 1 :(得分:0)

您可以将SQL存储在文本文件中:

从您在SQL中读取的Java代码,用于更新/插入数据到各种表中:

您的java代码也可以执行“运行SQL更新文件”的检查。

沿着这些方向的东西(非常伪代码)

Installed = getCurrentInstalledVersion();//info stored in an admin table for current version

if (Installed < V4.1){//This would probably work better as a switch
String sql = updateWith(URL file:\\PathTov4.1\sql.txt);
}
else{
     if(Installed = OtherVersions){
      String sql = UpdateWith(URL file:\\PathToOtherVersion\sql.txt);
      }
}

Connect.sendSQL(sql);//send the sql to the DB

我让你弄清楚更全面的细节。如果您已找到解决方案,为什么不在此处发布。

如果您使用交换机,您可以通过其他版本运行更新版本,如果需要,可以按正确的顺序放置版本,并在任何中断之前插入代码;