如何在Unix中的java中执行sql脚本文件

Posted

技术标签:

【中文标题】如何在Unix中的java中执行sql脚本文件【英文标题】:How to execute sql script file in java in Unix 【发布时间】:2012-02-20 18:19:04 【问题描述】:

我有这个 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");

【问题讨论】:

【参考方案1】:

您可以使用 JDBC 和 PreparedStatement 做到这一点,请参阅这些教程:

http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html http://www.commandprompt.com/ppbook/x20921

这里有一些例子:

http://www.exampledepot.com/egs/java.sql/InsertPs.html http://www.roseindia.net/jdbc/jdbc-mysql/TwicePreparedStatement.shtml http://www.roseindia.net/jdbc/prepared-statement-example.shtml http://www.heimetli.ch/jdbc/JDBCPreparedStatement.html

如果您的 Java 应用程序和 SQL 都位于同一台服务器上,那么您只需要加载它并按照上面给出的执行。在此处查看示例:

http://www.coderanch.com/t/306966/JDBC/java/Execute-sql-file-java How to execute .sql script file using JDBC Running a .sql script using MySQL with JDBC

如果它只是运行 SQL(即,您的应用程序的全部目的是运行该 SQL 并且什么都不做),您可能需要查看替代解决方案,例如使用 Ant 执行任务,请参阅:

http://ant.apache.org/manual/Tasks/sql.html

或使用您的数据库命令行实用程序,请在此处查看一些示例:

How to execute sql-script file in java?

这在很大程度上取决于您的情况,因此您必须查看对您的情况重要的内容才能决定走哪条路。

【讨论】:

sql脚本也位于Unix服务器上,不在数据库中【参考方案2】:

一般来说,在 Java 应用程序中执行数据库命令的正确方法是使用基于 Java 的数据库连接,使用 JDBC 或更高级别的 ORM,例如 Hibernate。出于多种原因,这些是首选,最重要的是因为它们可以比外部命令更容易地报告和处理错误路径。

但是,如果您有理由不使用 JDBC,则可以使用 ProcessBuilder,如本问题 How To Execute Native Commands In Java? 中所述

【讨论】:

以上是关于如何在Unix中的java中执行sql脚本文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Unix 中同时搜索和执行两个脚本?

怎样执行.sql文件

您如何从通过数据库链接执行的存储过程中进行假脱机?

如何从java执行sql文件

如何对SQL中的所有数据库执行脚本

如何在Unix控制台或Mac终端上运行shell脚本?