如何在Java中执行SQL脚本文件?

2022-09-01 03:00:17

我想在Java中执行SQL脚本文件,而无需将整个文件内容读取到一个大查询中并执行它。

还有其他标准方法吗?


答案 1

从Java执行SQL脚本的好方法,只要你不介意依赖Ant,就可以自己阅读它们。在我看来,这种依赖性在你的情况下是非常合理的。下面是示例代码,其中 SQLExec 类位于 ant.jar中:

private void executeSql(String sqlFilePath) {
    final class SqlExecuter extends SQLExec {
        public SqlExecuter() {
            Project project = new Project();
            project.init();
            setProject(project);
            setTaskType("sql");
            setTaskName("sql");
        }
    }

    SqlExecuter executer = new SqlExecuter();
    executer.setSrc(new File(sqlFilePath));
    executer.setDriver(args.getDriver());
    executer.setPassword(args.getPwd());
    executer.setUserid(args.getUser());
    executer.setUrl(args.getUrl());
    executer.execute();
}

答案 2

没有便携式方法可以做到这一点。您可以执行本机客户端作为外部程序来执行此操作,但是:

import java.io.*;
public class CmdExec {

  public static void main(String argv[]) {
    try {
      String line;
      Process p = Runtime.getRuntime().exec
        ("psql -U username -d dbname -h serverhost -f scripfile.sql");
      BufferedReader input =
        new BufferedReader
          (new InputStreamReader(p.getInputStream()));
      while ((line = input.readLine()) != null) {
        System.out.println(line);
      }
      input.close();
    }
    catch (Exception err) {
      err.printStackTrace();
    }
  }
}
  • 从这里提取代码示例并进行修改以回答假设用户想要执行PostgreSQL脚本文件的问题。

推荐