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

合并分支 'zs' 到 'master'

zs 查看合并请求 ty_wyl/adaptation-master1!7
......@@ -16,7 +16,7 @@ import java.util.Date;
@Entity
public class DBRecord {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;//主键id,自增
private String dbName;//数据库名字
private String sourceType;//原库类型
......
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.DBRecord;
import com.zjty.adaptationmaster.adaptor.entity.db.DatabaseResponse;
......@@ -8,6 +10,7 @@ import com.zjty.adaptationmaster.adaptor.repository.DBRecordDao;
import com.zjty.adaptationmaster.adaptor.service.DBMigrateService;
import com.zjty.adaptationmaster.base.response.ServerResponse;
import com.zjty.adaptationmaster.utils.Regular;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -76,8 +79,10 @@ public class DBMigrateServiceImpl implements DBMigrateService {
}
}
//建立表及导入数据
databaseManagement.setDatabaseName(databaseName);
Connection connection1 = Regular.databaseConnection(databaseManagement);
DBManage dbManage1 = new DBManage();
BeanUtils.copyProperties(databaseManagement,dbManage1);
dbManage1.setDatabaseName(databaseName);
Connection connection1 = Regular.databaseConnection(dbManage1);
if(connection1 != null){
path = Regular.mySqlRegular(databaseResponse.getSqlPath(),databaseName);
File file = new File(path);
......@@ -93,6 +98,14 @@ public class DBMigrateServiceImpl implements DBMigrateService {
try {
sql += s;
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.execute();
sql = "";
......
......@@ -6,6 +6,8 @@ import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class Regular {
......@@ -31,11 +33,13 @@ public class Regular {
boolean database = true;//去除.sql中使用数据库的sql语句
String tableName = null;
String incrementField = null;
List<String> foreignList = new ArrayList<>();
String previous = null;
while ((s = bufferedReader.readLine()) != null){
s = s.replaceAll("`","\"");
s += "\r\n";
//转换mysql的int和bigint类型
if(s.contains("int(") || s.contains("INT(")){
if(lowerAndUpper(s,"INT(")){
String dataType = s.substring(s.lastIndexOf("\"") + 1,s.indexOf("(")).trim();
if(dataType.length() <= 4){
//int类型
......@@ -43,10 +47,8 @@ public class Regular {
String endChar = s.substring(s.indexOf(")") + 1);
s = startChar + "4" + endChar;
if(lowerAndUpper(s,"AUTO_INCREMENT")){
s = s.replace("AUTO_INCREMENT","");
s = s.replace("auto_increment","");
s = s.replace("int4","serial");
s = s.replace("INT4","serial");
s = replaceLowerAndUpper(s,"AUTO_INCREMENT","");
s = replaceLowerAndUpper(s,"INT4","serial");
incrementField = s.substring(s.indexOf("\"") + 1,s.lastIndexOf("\""));
}
}else {
......@@ -56,10 +58,8 @@ public class Regular {
String endChar = s.substring(s.indexOf(")") + 1);
s = startChar + endChar;
if(lowerAndUpper(s,"AUTO_INCREMENT")){
s = s.replace("AUTO_INCREMENT","");
s = s.replace("auto_increment","");
s = s.replace("bigint","bigserial");
s = s.replace("BIGINT","bigserial");
s = replaceLowerAndUpper(s,"AUTO_INCREMENT","");
s = replaceLowerAndUpper(s,"BIGINT","bigserial");
incrementField = s.substring(s.indexOf("\"") + 1,s.lastIndexOf("\""));
}
}else if(lowerAndUpper(s,"SMALLINT")){
......@@ -67,10 +67,8 @@ public class Regular {
String endChar = s.substring(s.indexOf(")") + 1);
s = startChar + endChar;
if(lowerAndUpper(s,"AUTO_INCREMENT")){
s = s.replace("AUTO_INCREMENT","");
s = s.replace("auto_increment","");
s = s.replace("SMALLINT","smallserial");
s = s.replace("smallint","smallserial");
s = replaceLowerAndUpper(s,"AUTO_INCREMENT","");
s = replaceLowerAndUpper(s,"SMALLINT","smallserial");
incrementField = s.substring(s.indexOf("\"") + 1,s.lastIndexOf("\""));
}
}
......@@ -82,7 +80,7 @@ public class Regular {
s = StringType(s,"double","float");
//插入值时boolean类型转换
if(s.contains("bit(1)")){
s = s.replace("bit(1)","boolean");
s = replaceLowerAndUpper(s,"bit(1)","boolean");
}
if(s.contains("'\\0'")){
s = s.replace("'\\0'","'false'");
......@@ -90,13 +88,6 @@ public class Regular {
if(s.contains("'\\1'")){
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")){
tableName = s.substring(s.indexOf("\"") + 1,s.lastIndexOf("\"")).trim();
......@@ -121,9 +112,34 @@ public class Regular {
if(s.contains("USE") && s.contains(";") && s.contains("\"") && database){
database = false;
}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();
} catch (FileNotFoundException e) {
e.printStackTrace();
......@@ -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
......@@ -179,23 +204,6 @@ public class Regular {
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
......@@ -217,6 +225,6 @@ public class Regular {
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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论