您的位置:首页 > 数据库 > MySQL

遍历目录,批量执行.sql (mysql)文件

2018-03-09 09:16 357 查看
//包含table字符的为建表语句及其增量脚本  data为数据的crud及其增量脚本
//初始化版本和增量脚本,应有单独的文件夹,并且按顺序排列

import java.io.*;
import com.ibatis.common.jdbc.ScriptRunner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MysqlFile {

public static void main(String[] args) throws Exception {
Map<String,String> map = dbNameAndFile();
for (Map.Entry<String,String> entry:map.entrySet()){
test("E:\\sql",entry.getKey(),entry.getValue());
}
}
//遍历
private static void test(String fileDir,String dbname,String match) throws Exception{
List<File> fileList = new ArrayList<File>();
File file = new File(fileDir);
File[] files = file.listFiles();
if (files == null) {
return ;
}
for (File f : files) {
if (f.isFile()) {
//查找.sql结尾的文件
//查找文件名包含table和data的.sql文件
int result = f.getName().indexOf(match);
int sql= f.getName().indexOf(".sql");
int table=f.getName().indexOf("table");
//find data sql file
int data1 = f.getName().indexOf("-data");
int data2=f.getName().indexOf("_data");
if (result !=-1&&sql!=-1&&table!=-1){
fileList.add(f);
}
//                if (result!=-1&&sql!=-1&&(data1!=-1||data2!=-1)){
//                    fileList.add(f);
//                }
} else if (f.isDirectory()) {
test(f.getAbsolutePath(),dbname,match);
}

}
for (File f1 : fileList) {
String s = f1.getAbsolutePath();
//System.out.println(s);
//readSQLFile(s,dbname);

}
}
//执行sql文件
public static void readSQLFile(String path,String dbname)throws Exception{
ScriptRunner runner = new ScriptRunner();
runner.setUrl("jdbc:mysql://127.0.0.1:3306/"+dbname+"?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false");
runner.setUsername("root");
runner.setPassword("123456");
runner.setDriver("com.mysql.jdbc.Driver");
runner.setErrorLogWriter(null);
runner.setLogWriter(null);
runner.runScript(new InputStreamReader(new FileInputStream(path),"UTF-8"));
}
//数据库名和文件的对于关系
public static Map<String,String> dbNameAndFile(){
Map<String,String> map = new HashMap<String, String>();
map.put("xl_test_basicdata","yundt-center-basicdata");
map.put("xl_test_content","yundt-center-content");
map.put("xl_test_bpm","yundt-center-workorder");
map.put("xl_test_eval","yundt-center-evaluation");
map.put("xl_test_logistics","yundt-center-logistics");
map.put("xl_test_message","huieryun-comm");
map.put("xl_test_identity","huieryun-identity");
map.put("xl_test_inventory","yundt-center-inventory");
map.put("xl_test_item","yundt-center-item");
map.put("xl_test_mall_mgmt","smartsales-mall-appmgmt");
map.put("xl_test_promotion","yundt-center-promotion");
map.put("xl_test_order","yundt-center-trade");
map.put("xl_test_payment","huieryun-paymentcenter");
map.put("xl_test_ordersync","yundt-center-ordersync");
map.put("xl_test_settlement","yundt-center-settlement");
map.put("xl_test_shop","yundt-center-shop");
map.put("xl_test_user","yundt-center-user");
map.put("xl_test_member","yundt-center-member");
map.put("xl_test_jst","smartsales-jst");
//map.put("smartsales-jst",null);
return map;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: