Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
adaptation-master
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
912协同工作系统
项目监控管理工具
adaptation-master
Commits
ca8f77f7
提交
ca8f77f7
authored
12月 18, 2019
作者:
wyl
浏览文件
操作
浏览文件
下载
差异文件
提交
上级
f7aaecb1
ef34fa62
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
67 行增加
和
29 行删除
+67
-29
pom.xml
pom.xml
+10
-0
RegularReturn.java
...jty/adaptationmaster/adaptor/entity/db/RegularReturn.java
+16
-0
DBMigrateServiceImpl.java
...tionmaster/adaptor/service/Impl/DBMigrateServiceImpl.java
+20
-16
Regular.java
src/main/java/com/zjty/adaptationmaster/utils/Regular.java
+17
-6
Test4.java
src/test/java/com/zjty/adaptationmaster/Test4.java
+4
-7
没有找到文件。
pom.xml
浏览文件 @
ca8f77f7
...
...
@@ -35,6 +35,16 @@
<scope>
runtime
</scope>
</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>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
...
...
src/main/java/com/zjty/adaptationmaster/adaptor/entity/db/RegularReturn.java
0 → 100644
浏览文件 @
ca8f77f7
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
;
}
src/main/java/com/zjty/adaptationmaster/adaptor/service/Impl/DBMigrateServiceImpl.java
浏览文件 @
ca8f77f7
package
com
.
zjty
.
adaptationmaster
.
adaptor
.
service
.
Impl
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DBManage
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DBNameReturn
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DBRecord
;
import
com.zjty.adaptationmaster.adaptor.entity.db.DatabaseResponse
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.TypeReference
;
import
com.zjty.adaptationmaster.adaptor.entity.db.*
;
import
com.zjty.adaptationmaster.adaptor.repository.DBManageDao
;
import
com.zjty.adaptationmaster.adaptor.repository.DBRecordDao
;
import
com.zjty.adaptationmaster.adaptor.service.DBMigrateService
;
...
...
@@ -22,9 +21,7 @@ import java.sql.Connection;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.*
;
@Service
@Slf4j
...
...
@@ -51,18 +48,17 @@ public class DBMigrateServiceImpl implements DBMigrateService {
String
databaseName
=
databaseResponse
.
getDatabaseName
();
//查询新建的数据库是否存在
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
<>();
if
(
obj
instanceof
ArrayList
<?>){
for
(
Object
o:
((
List
<?>)
obj
)){
dbNameList
.
add
(
String
.
class
.
cast
(
o
));
}
}
if
(
dbNameList
.
contains
(
databaseName
)){
dbNameList1
.
forEach
(
db
->
dbNameList
.
add
(
db
.
trim
()));
if
(
dbNameList
!=
null
&&
dbNameList
.
size
()
!=
0
&&
dbNameList
.
contains
(
databaseName
)){
log
.
info
(
"该数据库已存在,请重新填写数据库名称"
);
return
ServerResponse
.
error
(
"该数据库已存在,请重新填写数据库名称"
);
}
//转换后的.sql
文件地址
//转换后的.sql
返回值
String
path
=
""
;
//根据传入的生成数据库类型,查找未被删除的配置文件
DBManage
databaseManagement
=
dbManageDao
.
findDBManageByIdAndStatus
(
databaseResponse
.
getId
(),
1
);
...
...
@@ -74,6 +70,7 @@ public class DBMigrateServiceImpl implements DBMigrateService {
databaseManagement
.
setDriver
(
highgoDriver
);
databaseManagement
.
setConnectionType
(
highgoConnnectionType
);
Connection
connection
=
Regular
.
databaseConnection
(
databaseManagement
);
boolean
errorOccur
=
false
;
if
(
connection
!=
null
){
PreparedStatement
preparedStatement
=
null
;
try
{
...
...
@@ -83,11 +80,14 @@ public class DBMigrateServiceImpl implements DBMigrateService {
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
log
.
info
(
"创建数据库:"
+
databaseName
+
"出错"
);
return
ServerResponse
.
error
(
"创建数据库:"
+
databaseName
+
"出错"
)
;
errorOccur
=
true
;
}
finally
{
try
{
preparedStatement
.
close
();
connection
.
close
();
if
(
errorOccur
){
return
ServerResponse
.
error
(
"创建数据库:"
+
databaseName
+
"出错"
);
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
...
...
@@ -98,7 +98,10 @@ public class DBMigrateServiceImpl implements DBMigrateService {
dbManage1
.
setDatabaseName
(
databaseName
);
Connection
connection1
=
Regular
.
databaseConnection
(
dbManage1
);
if
(
connection1
!=
null
){
long
a
=
System
.
currentTimeMillis
();
path
=
Regular
.
mySqlRegular
(
databaseResponse
.
getSqlPath
(),
databaseName
);
long
b
=
System
.
currentTimeMillis
();
System
.
out
.
println
(
"替换规则时间为:"
+
(
b
-
a
));
File
file
=
new
File
(
path
);
FileReader
fileReader
=
null
;
BufferedReader
bufferedReader
=
null
;
...
...
@@ -123,6 +126,7 @@ public class DBMigrateServiceImpl implements DBMigrateService {
continue
;
}
}
System
.
out
.
println
(
"sql执行时间为:"
+
(
System
.
currentTimeMillis
()
-
b
));
log
.
info
(
databaseResponse
.
getSqlPath
()
+
"执行完成"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
...
...
src/main/java/com/zjty/adaptationmaster/utils/Regular.java
浏览文件 @
ca8f77f7
...
...
@@ -2,6 +2,7 @@ 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.*
;
...
...
@@ -9,6 +10,8 @@ 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
{
...
...
@@ -18,7 +21,7 @@ public class Regular {
* @param path sql文件地址
* @param sqlName 数据库名字
*/
public
static
String
mySqlRegular
(
String
path
,
String
sqlName
){
public
static
String
mySqlRegular
(
String
path
,
String
sqlName
){
File
file
=
new
File
(
path
);
File
fileParent
=
new
File
(
file
.
getParent
()
+
"/transformSql"
);
if
(!
fileParent
.
exists
()){
...
...
@@ -35,7 +38,7 @@ public class Regular {
bufferedReader
=
new
BufferedReader
(
fileReader
);
fileWriter
=
new
FileWriter
(
saveFile
);
bufferedWriter
=
new
BufferedWriter
(
fileWriter
);
String
s
=
""
;
String
s
;
boolean
isFirstDrop
=
false
;
//去除.sql中使用数据库的sql语句
String
tableName
=
""
;
//数据库名称
String
incrementField
=
""
;
//自增长字段
...
...
@@ -52,12 +55,19 @@ public class Regular {
//将\0与\1替换为true或false
s
=
s
.
replace
(
"'\\0'"
,
"'false'"
);
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
);
continue
;
}
//记录自增字段
if
(
lowerAndUpper
(
s
,
"PRIMARY"
)
&&
lowerAndUpper
(
s
,
"KEY"
)){
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"
)){
...
...
@@ -84,6 +94,7 @@ public class Regular {
s
=
replaceLowerAndUpper
(
s
,
"SMALLINT"
,
"smallserial"
);
}
}
s
=
replaceLowerAndUpper
(
s
,
"tinyint"
,
"smallint"
);
s
=
replaceLowerAndUpper
(
s
,
"AUTO_INCREMENT"
,
""
);
}
//转换mysql的时间datetime类型
...
...
@@ -118,7 +129,7 @@ public class Regular {
//msql的外键设置移动位置
if
(
lowerAndUpper
(
s
,
"FOREIGN"
)
&&
lowerAndUpper
(
s
,
"KEY"
)
&&
lowerAndUpper
(
s
,
"CONSTRAINT"
)){
// 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
.
replace
All
(
"\r\n"
,
""
)
+
";\r\n"
;
foreignList
.
add
(
s
);
s
=
""
;
}
...
...
@@ -225,8 +236,8 @@ public class Regular {
* 大小写都替换
*/
public
static
String
replaceLowerAndUpper
(
String
s
,
String
upper
,
String
replacement
){
s
=
s
.
replace
(
upper
,
replacement
);
s
=
s
.
replace
(
upper
.
toLowerCase
(),
replacement
);
s
=
s
.
replace
All
(
upper
,
replacement
);
s
=
s
.
replace
All
(
upper
.
toLowerCase
(),
replacement
);
return
s
;
}
...
...
@@ -279,6 +290,6 @@ public class Regular {
public
static
void
main
(
String
[]
args
)
{
mySqlRegular
(
"C:\\Users\\admin\\Desktop\\database\\
hrm.sql"
,
"hrm
"
);
mySqlRegular
(
"C:\\Users\\admin\\Desktop\\database\\
editor.sql"
,
"test5
"
);
}
}
src/test/java/com/zjty/adaptationmaster/Test4.java
浏览文件 @
ca8f77f7
...
...
@@ -2,13 +2,10 @@ package com.zjty.adaptationmaster;
public
class
Test4
{
public
static
void
main
(
String
[]
args
)
{
String
a
=
"sdaf = df ccc = 18 adfasdf = utf8"
;
int
begin
=
a
.
indexOf
(
"ccc"
);
for
(
int
i
=
begin
;
i
<
a
.
length
();
i
++){
String
m
=
a
.
charAt
(
i
)
+
""
;
if
(
m
.
matches
(
"\\d"
)){
System
.
out
.
println
(
m
);
}
String
s
=
"123)456)789)0"
;
String
[]
array
=
s
.
split
(
"\\)"
);
for
(
String
si:
array
){
System
.
out
.
println
(
si
);
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论