我有这个 sql 脚本,我想在 java 程序中执行。它有 3 个参数:dropper_id、to_char(begin_dt)、to_char(end_dt)。我该怎么做?
该程序保存在 Unix 服务器上。
sql 脚本也位于 Unix 服务器上。
我想我很可能想通过命令行执行程序,但是如何使用参数执行它?
Process p = Runtime.getRuntime().exec ("psql sql_script.sql");
我有这个 sql 脚本,我想在 java 程序中执行。它有 3 个参数:dropper_id、to_char(begin_dt)、to_char(end_dt)。我该怎么做?
该程序保存在 Unix 服务器上。
sql 脚本也位于 Unix 服务器上。
我想我很可能想通过命令行执行程序,但是如何使用参数执行它?
Process p = Runtime.getRuntime().exec ("psql sql_script.sql");
您可以使用 JDBC 和 PreparedStatement 来做到这一点,请参阅这些教程:
这里有些例子:
如果您的 Java 应用程序和 SQL 都位于同一服务器上,那么您只需要加载它并按照上面给出的执行。请参阅此处的示例:
如果它只是运行 SQL(即,您的应用程序的全部目的是运行该 SQL 而什么都不做),您可能需要查看替代解决方案,例如使用 Ant 执行任务,请参见:
或使用您的数据库命令行实用程序,请在此处查看一些示例:
这在很大程度上取决于您的情况,因此您必须查看对您的情况重要的内容才能决定走哪条路。
通常,在 Java 应用程序中执行数据库命令的正确方法是使用基于 Java 的数据库连接,该连接使用JDBC或更高级别的 ORM,例如Hibernate。出于多种原因,这些是首选,最重要的是因为它们可以比外部命令更容易地报告和处理错误路径。
但是,如果您有理由不使用 JDBC,则可以使用 ProcessBuilder,如这个问题How To Execute Native Commands In Java?