提交 ca8f77f7 authored 作者: wyl's avatar wyl

提交

...@@ -35,6 +35,16 @@ ...@@ -35,6 +35,16 @@
<scope>runtime</scope> <scope>runtime</scope>
</dependency> </dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId> <artifactId>spring-boot-starter-test</artifactId>
......
package com.zjty.adaptationmaster.adaptor.entity.db;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.HashMap;
import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class RegularReturn {
private String path;//路径
private HashMap<String, List<String>> nameHashMap;
}
package com.zjty.adaptationmaster.adaptor.service.Impl; package com.zjty.adaptationmaster.adaptor.service.Impl;
import com.zjty.adaptationmaster.adaptor.entity.db.DBManage; import com.alibaba.fastjson.JSONObject;
import com.zjty.adaptationmaster.adaptor.entity.db.DBNameReturn; import com.alibaba.fastjson.TypeReference;
import com.zjty.adaptationmaster.adaptor.entity.db.DBRecord; import com.zjty.adaptationmaster.adaptor.entity.db.*;
import com.zjty.adaptationmaster.adaptor.entity.db.DatabaseResponse;
import com.zjty.adaptationmaster.adaptor.repository.DBManageDao; import com.zjty.adaptationmaster.adaptor.repository.DBManageDao;
import com.zjty.adaptationmaster.adaptor.repository.DBRecordDao; import com.zjty.adaptationmaster.adaptor.repository.DBRecordDao;
import com.zjty.adaptationmaster.adaptor.service.DBMigrateService; import com.zjty.adaptationmaster.adaptor.service.DBMigrateService;
...@@ -22,9 +21,7 @@ import java.sql.Connection; ...@@ -22,9 +21,7 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.List;
@Service @Service
@Slf4j @Slf4j
...@@ -51,18 +48,17 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -51,18 +48,17 @@ public class DBMigrateServiceImpl implements DBMigrateService {
String databaseName = databaseResponse.getDatabaseName(); String databaseName = databaseResponse.getDatabaseName();
//查询新建的数据库是否存在 //查询新建的数据库是否存在
ServerResponse serverResponse = findDBByDBType(databaseResponse.getId()); ServerResponse serverResponse = findDBByDBType(databaseResponse.getId());
Object obj = serverResponse.getData(); String data = serverResponse.getData().toString();
String dbName = data.substring(data.indexOf("[") + 1,data.lastIndexOf("]"));
String[] dbNameArray = dbName.split(",");
List<String> dbNameList1 = Arrays.asList(dbNameArray);
List<String> dbNameList = new ArrayList<>(); List<String> dbNameList = new ArrayList<>();
if(obj instanceof ArrayList<?>){ dbNameList1.forEach(db -> dbNameList.add(db.trim()));
for(Object o:((List<?>) obj)){ if(dbNameList != null && dbNameList.size() != 0 && dbNameList.contains(databaseName)){
dbNameList.add(String.class.cast(o));
}
}
if(dbNameList.contains(databaseName)){
log.info("该数据库已存在,请重新填写数据库名称"); log.info("该数据库已存在,请重新填写数据库名称");
return ServerResponse.error("该数据库已存在,请重新填写数据库名称"); return ServerResponse.error("该数据库已存在,请重新填写数据库名称");
} }
//转换后的.sql文件地址 //转换后的.sql返回值
String path = ""; String path = "";
//根据传入的生成数据库类型,查找未被删除的配置文件 //根据传入的生成数据库类型,查找未被删除的配置文件
DBManage databaseManagement = dbManageDao.findDBManageByIdAndStatus(databaseResponse.getId(),1); DBManage databaseManagement = dbManageDao.findDBManageByIdAndStatus(databaseResponse.getId(),1);
...@@ -74,6 +70,7 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -74,6 +70,7 @@ public class DBMigrateServiceImpl implements DBMigrateService {
databaseManagement.setDriver(highgoDriver); databaseManagement.setDriver(highgoDriver);
databaseManagement.setConnectionType(highgoConnnectionType); databaseManagement.setConnectionType(highgoConnnectionType);
Connection connection = Regular.databaseConnection(databaseManagement); Connection connection = Regular.databaseConnection(databaseManagement);
boolean errorOccur = false;
if(connection != null){ if(connection != null){
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
try { try {
...@@ -83,11 +80,14 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -83,11 +80,14 @@ public class DBMigrateServiceImpl implements DBMigrateService {
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
log.info("创建数据库:" + databaseName + "出错"); log.info("创建数据库:" + databaseName + "出错");
return ServerResponse.error("创建数据库:" + databaseName + "出错"); errorOccur = true;
}finally { }finally {
try { try {
preparedStatement.close(); preparedStatement.close();
connection.close(); connection.close();
if(errorOccur){
return ServerResponse.error("创建数据库:" + databaseName + "出错");
}
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -98,7 +98,10 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -98,7 +98,10 @@ public class DBMigrateServiceImpl implements DBMigrateService {
dbManage1.setDatabaseName(databaseName); dbManage1.setDatabaseName(databaseName);
Connection connection1 = Regular.databaseConnection(dbManage1); Connection connection1 = Regular.databaseConnection(dbManage1);
if(connection1 != null){ if(connection1 != null){
long a = System.currentTimeMillis();
path = Regular.mySqlRegular(databaseResponse.getSqlPath(),databaseName); path = Regular.mySqlRegular(databaseResponse.getSqlPath(),databaseName);
long b = System.currentTimeMillis();
System.out.println("替换规则时间为:" + (b - a));
File file = new File(path); File file = new File(path);
FileReader fileReader = null; FileReader fileReader = null;
BufferedReader bufferedReader = null; BufferedReader bufferedReader = null;
...@@ -123,6 +126,7 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -123,6 +126,7 @@ public class DBMigrateServiceImpl implements DBMigrateService {
continue; continue;
} }
} }
System.out.println("sql执行时间为:" + (System.currentTimeMillis() - b));
log.info(databaseResponse.getSqlPath() + "执行完成"); log.info(databaseResponse.getSqlPath() + "执行完成");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
......
...@@ -2,6 +2,7 @@ package com.zjty.adaptationmaster.utils; ...@@ -2,6 +2,7 @@ package com.zjty.adaptationmaster.utils;
import com.zjty.adaptationmaster.adaptor.entity.SystemVariable; 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 org.springframework.core.env.Environment;
import java.io.*; import java.io.*;
...@@ -9,6 +10,8 @@ import java.sql.Connection; ...@@ -9,6 +10,8 @@ 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 {
...@@ -18,7 +21,7 @@ public class Regular { ...@@ -18,7 +21,7 @@ public class Regular {
* @param path sql文件地址 * @param path sql文件地址
* @param sqlName 数据库名字 * @param sqlName 数据库名字
*/ */
public static String mySqlRegular(String path,String sqlName){ public static String mySqlRegular(String path, String sqlName){
File file = new File(path); File file = new File(path);
File fileParent = new File(file.getParent() + "/transformSql"); File fileParent = new File(file.getParent() + "/transformSql");
if(!fileParent.exists()){ if(!fileParent.exists()){
...@@ -35,7 +38,7 @@ public class Regular { ...@@ -35,7 +38,7 @@ public class Regular {
bufferedReader = new BufferedReader(fileReader); bufferedReader = new BufferedReader(fileReader);
fileWriter = new FileWriter(saveFile); fileWriter = new FileWriter(saveFile);
bufferedWriter = new BufferedWriter(fileWriter); bufferedWriter = new BufferedWriter(fileWriter);
String s = ""; String s;
boolean isFirstDrop = false;//去除.sql中使用数据库的sql语句 boolean isFirstDrop = false;//去除.sql中使用数据库的sql语句
String tableName = "";//数据库名称 String tableName = "";//数据库名称
String incrementField = "";//自增长字段 String incrementField = "";//自增长字段
...@@ -52,12 +55,19 @@ public class Regular { ...@@ -52,12 +55,19 @@ public class Regular {
//将\0与\1替换为true或false //将\0与\1替换为true或false
s = s.replace("'\\0'","'false'"); s = s.replace("'\\0'","'false'");
s = s.replace("'\\1'","'true'"); s = s.replace("'\\1'","'true'");
s = s.replaceAll("'0000-00-00 00:00:00'","null");
s = s.replace("\\\\","\\");//转义\
s = s.replace("\\\"","\"");//转义"
s = s.replace("\\'","''");//转义'
bufferedWriter.write(s); bufferedWriter.write(s);
continue; continue;
} }
//记录自增字段 //记录自增字段
if(lowerAndUpper(s,"PRIMARY") && lowerAndUpper(s,"KEY")){ if(lowerAndUpper(s,"PRIMARY") && lowerAndUpper(s,"KEY")){
incrementField = s.substring(s.indexOf("\"") + 1,s.lastIndexOf("\"")); incrementField = s.substring(s.indexOf("\"") + 1,s.lastIndexOf("\""));
s = replaceLowerAndUpper(s,"USING","");
s = replaceLowerAndUpper(s,"BTREE","");
s = replaceLowerAndUpper(s,",","");
} }
//记录创建表时表的名字 //记录创建表时表的名字
if(lowerAndUpper(s,"CREATE") && lowerAndUpper(s,"TABLE")){ if(lowerAndUpper(s,"CREATE") && lowerAndUpper(s,"TABLE")){
...@@ -84,6 +94,7 @@ public class Regular { ...@@ -84,6 +94,7 @@ public class Regular {
s = replaceLowerAndUpper(s,"SMALLINT","smallserial"); s = replaceLowerAndUpper(s,"SMALLINT","smallserial");
} }
} }
s = replaceLowerAndUpper(s,"tinyint","smallint");
s = replaceLowerAndUpper(s,"AUTO_INCREMENT",""); s = replaceLowerAndUpper(s,"AUTO_INCREMENT","");
} }
//转换mysql的时间datetime类型 //转换mysql的时间datetime类型
...@@ -118,7 +129,7 @@ public class Regular { ...@@ -118,7 +129,7 @@ public class Regular {
//msql的外键设置移动位置 //msql的外键设置移动位置
if(lowerAndUpper(s,"FOREIGN") && lowerAndUpper(s,"KEY") && lowerAndUpper(s,"CONSTRAINT")){ if(lowerAndUpper(s,"FOREIGN") && lowerAndUpper(s,"KEY") && lowerAndUpper(s,"CONSTRAINT")){
// ON DELETE NO ACTION ON UPDATE NO ACTION // ON DELETE NO ACTION ON UPDATE NO ACTION
s = "ALTER TABLE \"public\".\"" + tableName + "\" ADD " + s.replace("\r\n","") + ";\r\n"; s = "ALTER TABLE \"public\".\"" + tableName + "\" ADD " + s.replaceAll("\r\n","") + ";\r\n";
foreignList.add(s); foreignList.add(s);
s = ""; s = "";
} }
...@@ -225,8 +236,8 @@ public class Regular { ...@@ -225,8 +236,8 @@ public class Regular {
* 大小写都替换 * 大小写都替换
*/ */
public static String replaceLowerAndUpper(String s,String upper,String replacement){ public static String replaceLowerAndUpper(String s,String upper,String replacement){
s = s.replace(upper,replacement); s = s.replaceAll(upper,replacement);
s = s.replace(upper.toLowerCase(),replacement); s = s.replaceAll(upper.toLowerCase(),replacement);
return s; return s;
} }
...@@ -279,6 +290,6 @@ public class Regular { ...@@ -279,6 +290,6 @@ public class Regular {
public static void main(String[] args) { public static void main(String[] args) {
mySqlRegular("C:\\Users\\admin\\Desktop\\database\\hrm.sql","hrm"); mySqlRegular("C:\\Users\\admin\\Desktop\\database\\editor.sql","test5");
} }
} }
...@@ -2,13 +2,10 @@ package com.zjty.adaptationmaster; ...@@ -2,13 +2,10 @@ package com.zjty.adaptationmaster;
public class Test4 { public class Test4 {
public static void main(String[] args) { public static void main(String[] args) {
String a = "sdaf = df ccc = 18 adfasdf = utf8"; String s = "123)456)789)0";
int begin= a.indexOf("ccc"); String[] array = s.split("\\)");
for(int i = begin;i < a.length();i++){ for(String si:array){
String m = a.charAt(i) + ""; System.out.println(si);
if(m.matches("\\d")){
System.out.println(m);
}
} }
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论