遍历目录,批量执行.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; } }
相关文章推荐
- 批量执行特定文件目录下SQL文件脚本
- 怎么用批处理*.bat 执行文件目录下面的SQL语句脚本(批量的)。。。@echo off是什么意思?
- mysql 执行sql文件的方法
- shell在指定目录下批量执行sql脚本
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- 批量执行SQL文件
- 使用Navicat for Mysql执行sql查询文件注意事项
- 在windows环境下批量执行ORACLE的*.sql文件
- Mysql 执行sql脚本文件
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(二)
- [转]Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- 批量执行SQL文件
- java调用sqlplus执行批量脚本获得输出结果和调用.bat文件
- bat脚本执行mysql命令导入sql文件到数据库
- 往DB2导入.sql文件(表结构),批量执行SQL文建表
- MySQL执行外部sql脚本文件的命令
- MySQL执行外部sql脚本文件的命令
- mysql导入导出表结构及表数据及执行sql文件
- 003 MySQL下执行sql文件
- 批量执行sql脚本文件