packagetest;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStreamReader;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.List;/** 使用java以及jdbc执行sql脚本的工具示例代码*/
public classSqlHelper {public static voidmain(String[] args){
String path= "文件地址字符串";
String sql=getText(path);
List sqlarr =getSql(sql);for(int i=0; i<10; i++){
System.out.println(i+":"+sqlarr.get(i));
}try{
SqlHelper.execute(getConn(),sqlarr);
}catch(Exception e){
e.printStackTrace();
}
}private staticConnection getConn() {
String driver= "com.mysql.jdbc.Driver";
String url= "数据库连接";
String username= "账号";
String password= "密码";
Connection conn= null;try{
Class.forName(driver);//classLoader,加载对应驱动
conn =(Connection) DriverManager.getConnection(url, username, password);
}catch(ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}returnconn;
}public static void execute(Connection conn, List sqlFile) throwsException {
Statement stmt= null;
stmt=conn.createStatement();for(String sql : sqlFile) {
sql=sql.trim();if(sql!=null&&!sql.equals(""))
stmt.addBatch(sql);
}int[] rows =stmt.executeBatch();
System.out.println("Row count:" +Arrays.toString(rows));
conn.close();
}/** getText方法吧path路径里面的文件按行读数来放入一个大的String里面去
* 并在换行的时候加入\r\n*/
public staticString getText(String path){
File file= newFile(path);if(!file.exists()||file.isDirectory()){return null;
}
StringBuilder sb= newStringBuilder();try{
FileInputStream fis= newFileInputStream(path);
InputStreamReader isr= new InputStreamReader(fis,"UTF-8");
BufferedReader br= newBufferedReader(isr);
String temp= null;
temp=br.readLine();while(temp!=null){if(temp.length()>=2){
String str1= temp.substring(0, 1);
String str2= temp.substring(0, 2);if(str1.equals("#")||str2.equals("--")||str2.equals("/*")||str2.equals("//")){
temp=br.readLine();continue;
}
sb.append(temp+"\r\n");
}
temp=br.readLine();
}
br.close();
}catch(Exception e){
e.printStackTrace();
}returnsb.toString();
}/** getSqlArray方法
* 从文件的sql字符串中分析出能够独立执行的sql语句并返回*/
public static ListgetSql(String sql){
String s=sql;
s= s.replaceAll("\r\n", "\r");
s= s.replaceAll("\r", "\n");
List ret = new ArrayList();
String[] sqlarry= s.split(";"); //用;把所有的语句都分开成一个个单独的句子
sqlarry =filter(sqlarry);
ret=Arrays.asList(sqlarry);returnret;
}public staticString[] filter(String[] ss){
List strs = new ArrayList();for(String s : ss){if(s!=null&&!s.equals("")){
strs.add(s);
}
}
String[] result= newString[strs.size()];for(int i=0; i
result[i]=strs.get(i).toString();
}returnresult;
}
}