Java读取解析.sql文件

/**
* 创建数据库
* @param conn
* @param databaseName 数据库名称
* @throws SQLException 
*/
  

private void createDatabase(Connection conn, String databaseName) throws SQLException{

try {
conn.createStatement().execute("create database " + databaseName);
} catch (SQLException e) {
throw new SQLException("数据库创建失败。原因:" + e.getCause());
}

}


/**
* 初始化数据库(需要ibaits.jar)
* @param conn 一个打开的数据库链接
* @param sourceFilePath 数据库脚本文件路径:可创建数据库;向表中插入数据
* @throws IOException
* @throws SQLException
*/
private void initializeDatabaseByScriptRunner(Connection conn, String sourceFilePath) throws IOException, SQLException{
try {
ScriptRunner runner = new ScriptRunner(conn, false, false);
runner.setErrorLogWriter(null);
runner.setLogWriter(null);
runner.runScript(Resources.getResourceAsReader(sourceFilePath));
} catch (SQLException e) {
throw new SQLException("数据库初始化失败。原因:" + e.getCause());
}
}


/**
* 初始化数据库(需要ant.jar)
* @param driverClass
*            驱动类名称:<br>
*            oracle.jdbc.driver.OracleDriver、<br>
*            com.ibm.db2.jdbc.app.DB2Driver、<br>
*            com.microsoft.jdbc.sqlserver.SQLServerDriver、<br>
*            dm.jdbc.driver.DmDriver、<br>
*            com.sybase.jdbc.SybDriver、<br>
*            com.informix.jdbc.IfxDriver、<br>
*            com.mysql.jdbc.Driver、<br>
*            org.postgresql.Driver、<br>
*            sun.jdbc.odbc.JdbcOdbcDriver
* @param jdbcUrl
*            JDBC连接串:<br>
*            jdbc:oracle:thin:@localhost:1521:orcl、<br>
*            jdbc:db2://localhost:5000/sample、<br>
*            jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb;SelectMethod=cursor、<br>
*            jdbc:dm://localhost/system、<br>
*            jdbc:sybase:Tds:localhost:5007/myDB、<br>
*            jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver、<br>
*            jdbc:mysql://10.0.0.2:3306/test、<br>
*            jdbc:postgresql://localhost/myDB、<br>
*            jdbc:odbc:Driver={MicroSoft Access Driver
*            (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb")
* @param user
*            用户名
* @param password
*            密码
* @param sourceFilePath 数据库.sql文件
* @throws IOException
* @throws SQLException
*/
private void initializeDatabaseByAnt(String driver, String url, String user, String password, String sourceFilePath) throws IOException, SQLException{
SQLExec sqlExec = new SQLExec();   
//设置数据库参数   
sqlExec.setDriver(driver);   
sqlExec.setUrl(url);  
sqlExec.setUserid(user);   
sqlExec.setPassword(password);   
//要执行的脚本   
sqlExec.setSrc(new File(sourceFilePath));  
//有出错的语句该如何处理   
sqlExec.setOnerror((SQLExec.OnError)(EnumeratedAttribute
.getInstance(SQLExec.OnError.class, "abort")));
// sqlExec.setPrint(true); //设置是否输出 
// //输出到文件 sql.out 中;不设置该属性,默认输出到控制台  
// sqlExec.setOutput(new File("src/sql.out"));
sqlExec.setProject(new Project()); // 要指定这个属性,不然会出错   
sqlExec.execute();
}


注意:

如果您使用的.sql文件是从数据库中导出的,例如



那么需要进行如下更改

首先,去掉 "USE [***]";

然后,替换所有的所有的“GO”为“”、去掉注释,以及print语句

最后,在每一条sql语句后面加";"


OK,祝您好运!



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值