提交 cf755971 authored 作者: zhangshuang's avatar zhangshuang

zs

上级 b6273c2c
package com.zjty.adaptationmaster.adaptor.entity.db;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class SQLExecuteTask implements Runnable{
private Connection connection;
private String sql;
public SQLExecuteTask(Connection connection){
this.connection = connection;
}
public void setSql(String sql){
this.sql = sql;
}
@Override
public void run() {
PreparedStatement preparedStatement = null;
try {
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setQueryTimeout(10);
preparedStatement.execute();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
...@@ -22,6 +22,9 @@ import java.sql.PreparedStatement; ...@@ -22,6 +22,9 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.*; import java.util.*;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@Service @Service
@Slf4j @Slf4j
...@@ -32,6 +35,9 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -32,6 +35,9 @@ public class DBMigrateServiceImpl implements DBMigrateService {
@Autowired @Autowired
private DBRecordDao dbRecordDao; private DBRecordDao dbRecordDao;
//线程池数量,合适的线程数量能让程序更快
private static final int poolSize = 2;
@Value("${highgo.driver}") @Value("${highgo.driver}")
private String highgoDriver; private String highgoDriver;
@Value("${highgo.connectionType}") @Value("${highgo.connectionType}")
...@@ -105,25 +111,45 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -105,25 +111,45 @@ public class DBMigrateServiceImpl implements DBMigrateService {
File file = new File(path); File file = new File(path);
FileReader fileReader = null; FileReader fileReader = null;
BufferedReader bufferedReader = null; BufferedReader bufferedReader = null;
List<String> tableList = new ArrayList<>();
List<String> insertList = new ArrayList<>();
List<String> elseList = new ArrayList<>();
PreparedStatement preparedStatement1 = null; PreparedStatement preparedStatement1 = null;
try { try {
fileReader = new FileReader(file); fileReader = new FileReader(file);
bufferedReader = new BufferedReader(fileReader); bufferedReader = new BufferedReader(fileReader);
String s; String s;
String sql = ""; String sql = "";
ThreadPoolExecutor pool = new ThreadPoolExecutor(poolSize,poolSize,10, TimeUnit.SECONDS,new ArrayBlockingQueue<>(poolSize*2));
pool.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
while ((s = bufferedReader.readLine()) != null){ while ((s = bufferedReader.readLine()) != null){
try { if(Regular.lowerAndUpper(s,"INSERT") && Regular.lowerAndUpper(s,"INTO")){
insertList.add(s);
continue;
}else if(Regular.lowerAndUpper(s,"FOREIGN") && Regular.lowerAndUpper(s,"KEY")){
elseList.add(s);
continue;
}else if(Regular.lowerAndUpper(s,"CREATE") && Regular.lowerAndUpper(s,"INDEX")){
elseList.add(s);
continue;
}
sql += s; sql += s;
if(s.contains(";")){ if(s.contains(";")){
preparedStatement1 = connection1.prepareStatement(sql); preparedStatement1 = connection1.prepareStatement(sql);
preparedStatement1.execute(); preparedStatement1.execute();
sql = ""; sql = "";
} }
}catch (SQLException e) { }
log.info("sql执行出错语句:" + sql); for(String insert:insertList){
sql = ""; SQLExecuteTask sqlExecuteTask = new SQLExecuteTask(connection1);
e.printStackTrace(); sqlExecuteTask.setSql(insert);
continue; pool.submit(sqlExecuteTask);
}
if(pool.getCorePoolSize() == 0){
for(String elseChar:elseList){
SQLExecuteTask sqlExecuteTask = new SQLExecuteTask(connection1);
sqlExecuteTask.setSql(elseChar);
pool.submit(sqlExecuteTask);
} }
} }
System.out.println("sql执行时间为:" + (System.currentTimeMillis() - b)); System.out.println("sql执行时间为:" + (System.currentTimeMillis() - b));
...@@ -134,7 +160,7 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -134,7 +160,7 @@ public class DBMigrateServiceImpl implements DBMigrateService {
try { try {
bufferedReader.close(); bufferedReader.close();
fileReader.close(); fileReader.close();
preparedStatement1.close(); //preparedStatement1.close();
connection1.close(); connection1.close();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
......
package com.zjty.adaptationmaster.utils; package com.zjty.adaptationmaster.utils;
import com.zjty.adaptationmaster.adaptor.entity.SystemVariable;
import com.zjty.adaptationmaster.adaptor.entity.db.DBManage; import com.zjty.adaptationmaster.adaptor.entity.db.DBManage;
import com.zjty.adaptationmaster.adaptor.entity.db.RegularReturn;
import org.springframework.core.env.Environment;
import java.io.*; import java.io.*;
import java.sql.Connection; import java.sql.Connection;
import java.sql.DriverManager; import java.sql.DriverManager;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List; import java.util.List;
public class Regular { public class Regular {
...@@ -290,6 +285,6 @@ public class Regular { ...@@ -290,6 +285,6 @@ public class Regular {
public static void main(String[] args) { public static void main(String[] args) {
mySqlRegular("C:\\Users\\admin\\Desktop\\database\\editor.sql","test5"); mySqlRegular("C:\\Users\\admin\\Desktop\\database\\new_debug.sql","new_debug");
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论