提交 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;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@Service
@Slf4j
......@@ -32,6 +35,9 @@ public class DBMigrateServiceImpl implements DBMigrateService {
@Autowired
private DBRecordDao dbRecordDao;
//线程池数量,合适的线程数量能让程序更快
private static final int poolSize = 2;
@Value("${highgo.driver}")
private String highgoDriver;
@Value("${highgo.connectionType}")
......@@ -105,25 +111,45 @@ public class DBMigrateServiceImpl implements DBMigrateService {
File file = new File(path);
FileReader fileReader = null;
BufferedReader bufferedReader = null;
List<String> tableList = new ArrayList<>();
List<String> insertList = new ArrayList<>();
List<String> elseList = new ArrayList<>();
PreparedStatement preparedStatement1 = null;
try {
fileReader = new FileReader(file);
bufferedReader = new BufferedReader(fileReader);
String s;
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){
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;
if(s.contains(";")){
preparedStatement1 = connection1.prepareStatement(sql);
preparedStatement1.execute();
sql = "";
}
}catch (SQLException e) {
log.info("sql执行出错语句:" + sql);
sql = "";
e.printStackTrace();
continue;
}
for(String insert:insertList){
SQLExecuteTask sqlExecuteTask = new SQLExecuteTask(connection1);
sqlExecuteTask.setSql(insert);
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));
......@@ -134,7 +160,7 @@ public class DBMigrateServiceImpl implements DBMigrateService {
try {
bufferedReader.close();
fileReader.close();
preparedStatement1.close();
//preparedStatement1.close();
connection1.close();
} catch (Exception e) {
e.printStackTrace();
......
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.RegularReturn;
import org.springframework.core.env.Environment;
import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
public class Regular {
......@@ -290,6 +285,6 @@ public class Regular {
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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论