提交 5cde2b6a authored 作者: zhangshuang's avatar zhangshuang

合并分支 'zs' 到 'master'

zs 查看合并请求 ty_wyl/adaptation-master1!7
...@@ -16,7 +16,7 @@ import java.util.Date; ...@@ -16,7 +16,7 @@ import java.util.Date;
@Entity @Entity
public class DBRecord { public class DBRecord {
@Id @Id
@GeneratedValue(strategy = GenerationType.AUTO) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;//主键id,自增 private Integer id;//主键id,自增
private String dbName;//数据库名字 private String dbName;//数据库名字
private String sourceType;//原库类型 private String sourceType;//原库类型
......
package com.zjty.adaptationmaster.adaptor.service.Impl; package com.zjty.adaptationmaster.adaptor.service.Impl;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.zjty.adaptationmaster.adaptor.entity.db.DBManage; import com.zjty.adaptationmaster.adaptor.entity.db.DBManage;
import com.zjty.adaptationmaster.adaptor.entity.db.DBRecord; import com.zjty.adaptationmaster.adaptor.entity.db.DBRecord;
import com.zjty.adaptationmaster.adaptor.entity.db.DatabaseResponse; import com.zjty.adaptationmaster.adaptor.entity.db.DatabaseResponse;
...@@ -8,6 +10,7 @@ import com.zjty.adaptationmaster.adaptor.repository.DBRecordDao; ...@@ -8,6 +10,7 @@ import com.zjty.adaptationmaster.adaptor.repository.DBRecordDao;
import com.zjty.adaptationmaster.adaptor.service.DBMigrateService; import com.zjty.adaptationmaster.adaptor.service.DBMigrateService;
import com.zjty.adaptationmaster.base.response.ServerResponse; import com.zjty.adaptationmaster.base.response.ServerResponse;
import com.zjty.adaptationmaster.utils.Regular; import com.zjty.adaptationmaster.utils.Regular;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -76,8 +79,10 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -76,8 +79,10 @@ public class DBMigrateServiceImpl implements DBMigrateService {
} }
} }
//建立表及导入数据 //建立表及导入数据
databaseManagement.setDatabaseName(databaseName); DBManage dbManage1 = new DBManage();
Connection connection1 = Regular.databaseConnection(databaseManagement); BeanUtils.copyProperties(databaseManagement,dbManage1);
dbManage1.setDatabaseName(databaseName);
Connection connection1 = Regular.databaseConnection(dbManage1);
if(connection1 != null){ if(connection1 != null){
path = Regular.mySqlRegular(databaseResponse.getSqlPath(),databaseName); path = Regular.mySqlRegular(databaseResponse.getSqlPath(),databaseName);
File file = new File(path); File file = new File(path);
...@@ -93,6 +98,14 @@ public class DBMigrateServiceImpl implements DBMigrateService { ...@@ -93,6 +98,14 @@ public class DBMigrateServiceImpl implements DBMigrateService {
try { try {
sql += s; sql += s;
if(s.contains(";")){ if(s.contains(";")){
/*if(Regular.lowerAndUpper(sql,"CREATE") && Regular.lowerAndUpper(sql,"TABLE")){
String endChar = sql.substring(sql.lastIndexOf("\"") + 1);
if(endChar.contains(",")){
String start = sql.substring(0,sql.lastIndexOf(","));
String end = sql.substring(sql.lastIndexOf(",") + 1);
sql = start + end;
}
}*/
preparedStatement1 = connection1.prepareStatement(sql); preparedStatement1 = connection1.prepareStatement(sql);
preparedStatement1.execute(); preparedStatement1.execute();
sql = ""; sql = "";
......
...@@ -6,6 +6,8 @@ import java.io.*; ...@@ -6,6 +6,8 @@ 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.List;
public class Regular { public class Regular {
...@@ -31,11 +33,13 @@ public class Regular { ...@@ -31,11 +33,13 @@ public class Regular {
boolean database = true;//去除.sql中使用数据库的sql语句 boolean database = true;//去除.sql中使用数据库的sql语句
String tableName = null; String tableName = null;
String incrementField = null; String incrementField = null;
List<String> foreignList = new ArrayList<>();
String previous = null;
while ((s = bufferedReader.readLine()) != null){ while ((s = bufferedReader.readLine()) != null){
s = s.replaceAll("`","\""); s = s.replaceAll("`","\"");
s += "\r\n"; s += "\r\n";
//转换mysql的int和bigint类型 //转换mysql的int和bigint类型
if(s.contains("int(") || s.contains("INT(")){ if(lowerAndUpper(s,"INT(")){
String dataType = s.substring(s.lastIndexOf("\"") + 1,s.indexOf("(")).trim(); String dataType = s.substring(s.lastIndexOf("\"") + 1,s.indexOf("(")).trim();
if(dataType.length() <= 4){ if(dataType.length() <= 4){
//int类型 //int类型
...@@ -43,10 +47,8 @@ public class Regular { ...@@ -43,10 +47,8 @@ public class Regular {
String endChar = s.substring(s.indexOf(")") + 1); String endChar = s.substring(s.indexOf(")") + 1);
s = startChar + "4" + endChar; s = startChar + "4" + endChar;
if(lowerAndUpper(s,"AUTO_INCREMENT")){ if(lowerAndUpper(s,"AUTO_INCREMENT")){
s = s.replace("AUTO_INCREMENT",""); s = replaceLowerAndUpper(s,"AUTO_INCREMENT","");
s = s.replace("auto_increment",""); s = replaceLowerAndUpper(s,"INT4","serial");
s = s.replace("int4","serial");
s = s.replace("INT4","serial");
incrementField = s.substring(s.indexOf("\"") + 1,s.lastIndexOf("\"")); incrementField = s.substring(s.indexOf("\"") + 1,s.lastIndexOf("\""));
} }
}else { }else {
...@@ -56,10 +58,8 @@ public class Regular { ...@@ -56,10 +58,8 @@ public class Regular {
String endChar = s.substring(s.indexOf(")") + 1); String endChar = s.substring(s.indexOf(")") + 1);
s = startChar + endChar; s = startChar + endChar;
if(lowerAndUpper(s,"AUTO_INCREMENT")){ if(lowerAndUpper(s,"AUTO_INCREMENT")){
s = s.replace("AUTO_INCREMENT",""); s = replaceLowerAndUpper(s,"AUTO_INCREMENT","");
s = s.replace("auto_increment",""); s = replaceLowerAndUpper(s,"BIGINT","bigserial");
s = s.replace("bigint","bigserial");
s = s.replace("BIGINT","bigserial");
incrementField = s.substring(s.indexOf("\"") + 1,s.lastIndexOf("\"")); incrementField = s.substring(s.indexOf("\"") + 1,s.lastIndexOf("\""));
} }
}else if(lowerAndUpper(s,"SMALLINT")){ }else if(lowerAndUpper(s,"SMALLINT")){
...@@ -67,10 +67,8 @@ public class Regular { ...@@ -67,10 +67,8 @@ public class Regular {
String endChar = s.substring(s.indexOf(")") + 1); String endChar = s.substring(s.indexOf(")") + 1);
s = startChar + endChar; s = startChar + endChar;
if(lowerAndUpper(s,"AUTO_INCREMENT")){ if(lowerAndUpper(s,"AUTO_INCREMENT")){
s = s.replace("AUTO_INCREMENT",""); s = replaceLowerAndUpper(s,"AUTO_INCREMENT","");
s = s.replace("auto_increment",""); s = replaceLowerAndUpper(s,"SMALLINT","smallserial");
s = s.replace("SMALLINT","smallserial");
s = s.replace("smallint","smallserial");
incrementField = s.substring(s.indexOf("\"") + 1,s.lastIndexOf("\"")); incrementField = s.substring(s.indexOf("\"") + 1,s.lastIndexOf("\""));
} }
} }
...@@ -82,7 +80,7 @@ public class Regular { ...@@ -82,7 +80,7 @@ public class Regular {
s = StringType(s,"double","float"); s = StringType(s,"double","float");
//插入值时boolean类型转换 //插入值时boolean类型转换
if(s.contains("bit(1)")){ if(s.contains("bit(1)")){
s = s.replace("bit(1)","boolean"); s = replaceLowerAndUpper(s,"bit(1)","boolean");
} }
if(s.contains("'\\0'")){ if(s.contains("'\\0'")){
s = s.replace("'\\0'","'false'"); s = s.replace("'\\0'","'false'");
...@@ -90,13 +88,6 @@ public class Regular { ...@@ -90,13 +88,6 @@ public class Regular {
if(s.contains("'\\1'")){ if(s.contains("'\\1'")){
s = s.replace("'\\1'","true"); s = s.replace("'\\1'","true");
} }
//mysql的外键key值
if(lowerAndUpper(s,"KEY") && !lowerAndUpper(s,"FOREIGN") && !lowerAndUpper(s,"PRIMARY")){
String startChar = s.substring(0,s.indexOf("\""));
if(lowerAndUpper(startChar,"KEY")){
continue;
}
}
//记录创建表时表的名字 //记录创建表时表的名字
if(lowerAndUpper(s,"CREATE") && lowerAndUpper(s,"TABLE")){ if(lowerAndUpper(s,"CREATE") && lowerAndUpper(s,"TABLE")){
tableName = s.substring(s.indexOf("\"") + 1,s.lastIndexOf("\"")).trim(); tableName = s.substring(s.indexOf("\"") + 1,s.lastIndexOf("\"")).trim();
...@@ -121,9 +112,34 @@ public class Regular { ...@@ -121,9 +112,34 @@ public class Regular {
if(s.contains("USE") && s.contains(";") && s.contains("\"") && database){ if(s.contains("USE") && s.contains(";") && s.contains("\"") && database){
database = false; database = false;
}else { }else {
bufferedWriter.write(s); //逗号去除
//mysql的外键key值去除
if(previous != null){
if(lowerAndUpper(s,"KEY") && !lowerAndUpper(s,"FOREIGN") && !lowerAndUpper(s,"PRIMARY")) {
String startChar = s.substring(0,s.indexOf("\""));
if(lowerAndUpper(startChar,"KEY")){
previous = previous.substring(0,previous.lastIndexOf(",")) +"\r\n";
s = "";
}
}
//msql的外键设置移动位置
if(lowerAndUpper(s,"FOREIGN") && lowerAndUpper(s,"KEY") && lowerAndUpper(s,"CONSTRAINT")){
s = "ALTER TABLE \"public\".\"" + tableName + "\" ADD " + s + " ON DELETE NO ACTION ON UPDATE NO ACTION;\r\n";
foreignList.add(s);
s = "";
}else {
bufferedWriter.write(previous);
}
}
previous = s;
} }
} }
//写入最后一句
bufferedWriter.write(previous);
//写入创建外键的sql语句
for(String list:foreignList){
bufferedWriter.write(list);
}
bufferedWriter.flush(); bufferedWriter.flush();
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
e.printStackTrace(); e.printStackTrace();
...@@ -153,6 +169,15 @@ public class Regular { ...@@ -153,6 +169,15 @@ public class Regular {
} }
} }
/**
* 大小写都替换
*/
public static String replaceLowerAndUpper(String s,String upper,String replacement){
s = s.replace(upper,replacement);
s = s.replace(upper.toLowerCase(),replacement);
return s;
}
/** /**
* 判断出入的字符串 * 判断出入的字符串
* @param s * @param s
...@@ -179,23 +204,6 @@ public class Regular { ...@@ -179,23 +204,6 @@ public class Regular {
return s; return s;
} }
/**
* 自增整数,转换为highgo的自增整数
* @param s
*/
public static String integerIncrement(String s,String integerType){
if(lowerAndUpper(s,"AUTO_INCREMENT")){
if(integerType.equals("int4")){
s = s.replace(integerType,"serial");
}else {
s = s.replace(integerType,"bigserial");
}
s = s.replace("AUTO_INCREMENT","");
s = s.replace("auto_increment","");
}
return s;
}
/** /**
* 数据库连接 * 数据库连接
* @param * @param
...@@ -217,6 +225,6 @@ public class Regular { ...@@ -217,6 +225,6 @@ public class Regular {
public static void main(String[] args) { public static void main(String[] args) {
mySqlRegular("C:\\Users\\admin\\Desktop\\2.sql","else"); mySqlRegular("C:\\Users\\admin\\Desktop\\database\\hrm.sql","else");
} }
} }
package com.zjty.adaptationmaster;
public class Test4 {
public static void main(String[] args) {
String a = "CREATE TABLE \"routine_human_list\" (\n" +
" \"routine_routine_id\" varchar(255) NOT NULL,\n" +
" \"human_list\" varchar(255) DEFAULT NULL,\n" +
")";
String endChar = a.substring(a.lastIndexOf("\"") + 1);
if(endChar.contains(",")){
String start = a.substring(0,a.lastIndexOf(","));
String end = a.substring(a.lastIndexOf(",") + 1);
a = start + end;
System.out.println(a);
}
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论