如何在Unix中的java中执行sql脚本文件
问题描述:
我有这个sql脚本,我想在java程序中执行。它需要3个参数:dropper_id,to_char(begin_dt),to_char(end_dt)。我将如何做到这一点?如何在Unix中的java中执行sql脚本文件
该程序在Unix服务器上进行。
sql脚本也位于Unix服务器上。
我想我很可能想通过命令行来执行程序,但是如何使用参数执行它?
Process p = Runtime.getRuntime().exec ("psql sql_script.sql");
答
你可以做,使用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来完成任务,请参阅:
或使用任何为你的数据库命令行实用工具,可以看一些例子在这里:
这在很大程度上取决于你的情况,所以你必须看看你的案例中重要的是决定走哪条路。
答
通常,在Java应用程序中执行数据库命令的正确方法是使用基于Java的数据库连接,使用JDBC或更高级别的ORM,例如Hibernate。由于多种原因,这些是首选,最重要的原因是它们比外部命令更容易报告和处理错误路径。
但是,如果你有一个理由不使用JDBC,你可以使用的ProcessBuilder在这个问题How To Execute Native Commands In Java?
SQL脚本也位于Unix服务器上的描述,而不是在数据库 – Mike 2012-02-20 18:30:26