public class AntExeSql {
/**
* 执行sql脚本文件
* @param username 数据库用户名称
* @param password 数据库用户密码
* @param url 数据库url
* @param driverClassName 数据库驱动
* @param filepath 脚本文件路径
*/
public static void exeSqlFile(String username, String password, String url, String driverClassName,String filepath){
try {
String filepathName = filepath.substring(0, filepath.lastIndexOf("."));
String outputPath = filepathName+".out";
SQLExec sqlExec = new SQLExec();
//设置数据库参数
sqlExec.setDriver(driverClassName);
sqlExec.setUrl(url);
sqlExec.setUserid(username);
sqlExec.setPassword(password);
//设置字符编码
sqlExec.setEncoding("GBK");
//要执行的脚本
sqlExec.setSrc(new File(filepath));
//有出错的语句该如何处理
sqlExec.setOnerror((SQLExec.OnError)(EnumeratedAttribute.getInstance(
SQLExec.OnError.class, "abort")));
sqlExec.setPrint(true); //设置是否输出
//输出到文件 sql.out 中;不设置该属性,默认输出到控制台
sqlExec.setOutput(new File(outputPath));
sqlExec.setProject(new Project()); // 要指定这个属性,不然会出错
sqlExec.execute();
System.out.println("执行sql脚本文件成功");
} catch (Exception e) {
System.err.println("执行sql脚本文件失败");
}
}
public static void main(String[] args) {
String username = "orcl";
String password = "111111";
String host = "127.0.0.1";
String port="1521";
String dbName="oracle";
String url = "jdbc:oracle:thin:@"+host+":"+port+":"+dbName;
String driverClassName = "oracle.jdbc.driver.OracleDriver";
String filepath = "D:\\test.sql";
AntExeSql.exeSqlFile(username,password,url,driverClassName,filepath);
}
}
应用的jar包为ant-1.8.2.jar,ant-launcher-1.8.2。