Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-tool
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tool
amos-tool
Commits
b19f305d
Commit
b19f305d
authored
Jul 19, 2023
by
陈祥烨
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
数据迁移
parent
0d4a2952
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
245 additions
and
10 deletions
+245
-10
RelationResource.java
...om/yeejoin/amos/api/tool/controller/RelationResource.java
+8
-10
TransferDataResource.java
...eejoin/amos/api/tool/controller/TransferDataResource.java
+30
-0
RelationService.java
...m/yeejoin/amos/api/tool/face/service/RelationService.java
+0
-0
TransferDataService.java
...ejoin/amos/api/tool/face/service/TransferDataService.java
+60
-0
TableUtils.java
...main/java/com/yeejoin/amos/api/tool/utils/TableUtils.java
+147
-0
No files found.
src/main/java/com/yeejoin/amos/api/tool/controller/RelationResource.java
View file @
b19f305d
...
...
@@ -6,17 +6,13 @@ import com.yeejoin.amos.api.tool.face.service.RelationService;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Configurable
;
import
org.springframework.web.bind.annotation.*
;
import
org.typroject.tyboot.core.foundation.enumeration.UserType
;
import
org.typroject.tyboot.core.restful.doc.TycloudOperation
;
import
org.typroject.tyboot.core.restful.utils.ResponseHelper
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
javax.xml.crypto.Data
;
import
java.sql.Connection
;
import
java.util.ArrayList
;
import
java.util.List
;
import
javax.servlet.http.HttpServletResponse
;
@CrossOrigin
...
...
@@ -31,29 +27,31 @@ public class RelationResource {
/**
* 根据机构ID和数据库sequenceNbr批量删除数据库
*
* @param agencyCodeId 机构ID
* @param sequenceNbrs 多个主键
* @return String
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@DeleteMapping
(
value
=
"/relation/{agencyCodeId}/{sequenceNbrs}"
)
@ApiOperation
(
httpMethod
=
"DELETE"
,
value
=
"机构删除"
,
notes
=
"机构删除"
)
public
ResponseModel
<
String
>
deleteDataBase
(
@PathVariable
Long
agencyCodeId
,
@PathVariable
String
sequenceNbrs
)
throws
Exception
{
relationService
.
deleteAgency
(
agencyCodeId
,
sequenceNbrs
);
relationService
.
deleteAgency
(
agencyCodeId
,
sequenceNbrs
);
return
ResponseHelper
.
buildResponse
(
"The data has been deleted !"
);
}
/**
* 导出SQL脚本
*
* @return String
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@GetMapping
(
value
=
"/output/{agencyCodeId}/{sequenceNbrs}"
)
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"导出"
,
notes
=
"导出"
)
public
ResponseModel
<
String
>
genereteSQL
(
@PathVariable
Long
agencyCodeId
,
@PathVariable
String
sequenceNbrs
)
throws
Exception
{
relationService
.
outputAgency
(
agencyCodeId
,
sequenceNbrs
);
public
ResponseModel
<
String
>
genereteSQL
(
@PathVariable
Long
agencyCodeId
,
@PathVariable
String
sequenceNbrs
,
HttpServletResponse
response
)
throws
Exception
{
relationService
.
outputAgency
(
agencyCodeId
,
sequenceNbrs
,
response
);
return
ResponseHelper
.
buildResponse
(
"yes"
);
}
}
src/main/java/com/yeejoin/amos/api/tool/controller/TransferDataResource.java
0 → 100644
View file @
b19f305d
package
com
.
yeejoin
.
amos
.
api
.
tool
.
controller
;
import
com.yeejoin.amos.api.tool.face.service.TransferDataService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
org.typroject.tyboot.core.foundation.enumeration.UserType
;
import
org.typroject.tyboot.core.restful.doc.TycloudOperation
;
import
org.typroject.tyboot.core.restful.utils.ResponseHelper
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
java.sql.SQLException
;
@CrossOrigin
@RestController
@Api
(
tags
=
"数据迁移"
)
@RequestMapping
(
value
=
"/transfer_data"
)
public
class
TransferDataResource
{
@Autowired
private
TransferDataService
transferDataService
;
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@PutMapping
(
value
=
"/relation/"
)
@ApiOperation
(
httpMethod
=
"Put"
,
value
=
"数据迁移"
,
notes
=
"数据迁移"
)
public
ResponseModel
<
String
>
transferData
(
)
throws
SQLException
,
ClassNotFoundException
{
transferDataService
.
transferData
();
return
ResponseHelper
.
buildResponse
(
"The data has been transferred !"
);
}
}
src/main/java/com/yeejoin/amos/api/tool/face/service/RelationService.java
View file @
b19f305d
This diff is collapsed.
Click to expand it.
src/main/java/com/yeejoin/amos/api/tool/face/service/TransferDataService.java
0 → 100644
View file @
b19f305d
package
com
.
yeejoin
.
amos
.
api
.
tool
.
face
.
service
;
import
com.yeejoin.amos.api.tool.face.orm.entity.TableColumn
;
import
com.yeejoin.amos.api.tool.utils.TableUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.SQLException
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
@Service
public
class
TransferDataService
{
private
static
String
TABLE_DES
=
"mcb_warning_base_source_attribution"
;
private
static
String
TABLE_ORI
=
"qms_explorer"
;
private
static
String
DBNAME_DES
=
"amos_mcb"
;
private
static
String
DBNAME_ORI
=
"amos_studio"
;
public
Connection
connectDataBase
(
String
dataBaseName
)
throws
ClassNotFoundException
,
SQLException
{
// 加载数据库驱动
Class
.
forName
(
"com.mysql.cj.jdbc.Driver"
);
// 生成url
String
dbUrl
=
"jdbc:mysql://172.16.3.18:3306/"
+
dataBaseName
;
// 连接数据库
return
DriverManager
.
getConnection
(
dbUrl
,
"root"
,
"Yeejoin@2020"
);
}
public
void
transferData
()
throws
SQLException
,
ClassNotFoundException
{
Connection
connection
=
this
.
connectDataBase
(
DBNAME_ORI
);
List
<
Map
<
String
,
Object
>>
maps
=
TableUtils
.
getMaps
(
"SELECT * FROM "
+
TABLE_ORI
+
" ;"
,
connection
);
connection
.
close
();
connection
=
this
.
connectDataBase
(
DBNAME_DES
);
List
<
TableColumn
>
columns
=
TableUtils
.
getTableColumn
(
TABLE_DES
,
connection
);
List
<
Map
<
String
,
Object
>>
dataList
=
this
.
convertDataMap
(
maps
,
columns
);
System
.
out
.
println
(
TableUtils
.
getInsertSQL
(
dataList
,
columns
,
TABLE_DES
));
}
public
List
<
Map
<
String
,
Object
>>
convertDataMap
(
List
<
Map
<
String
,
Object
>>
maps
,
List
<
TableColumn
>
columns
)
{
List
<
Map
<
String
,
Object
>>
dataList
=
new
ArrayList
<>();
for
(
Map
<
String
,
Object
>
map
:
maps
)
{
Map
<
String
,
Object
>
data
=
new
HashMap
<>();
for
(
TableColumn
column
:
columns
)
{
data
.
put
(
column
.
getColumnName
(),
null
);
}
data
.
replace
(
"SEQUENCE_NBR"
,
map
.
get
(
"SEQUENCE_NBR"
));
data
.
replace
(
"NAME"
,
map
.
get
(
"RESOURCE_NAME"
));
data
.
replace
(
"PARENT_ID"
,
map
.
get
(
"PARENT_ID"
));
data
.
replace
(
"CODE"
,
map
.
get
(
"AGENCY_CODE"
));
data
.
replace
(
"REC_USER_ID"
,
map
.
get
(
"REC_USER_ID"
));
data
.
replace
(
"REC_DATE"
,
map
.
get
(
"REC_DATE"
));
dataList
.
add
(
data
);
}
return
dataList
;
}
}
src/main/java/com/yeejoin/amos/api/tool/utils/TableUtils.java
0 → 100644
View file @
b19f305d
package
com
.
yeejoin
.
amos
.
api
.
tool
.
utils
;
import
com.alibaba.fastjson.JSON
;
import
com.yeejoin.amos.api.tool.face.orm.entity.TableColumn
;
import
org.springframework.util.ObjectUtils
;
import
java.sql.*
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
public
class
TableUtils
{
/**
* 数据库备份路径
*/
public
static
final
String
BACKUP_PATH
=
"/db/"
;
/**
* 数据库备份文本前缀
*/
public
static
String
ONESQL_PREFIX
=
""
;
private
static
String
SUFFIX
=
"sql"
;
private
static
String
BR
=
"\r\n"
;
private
static
String
SLASH
=
"/"
;
private
static
String
BRANCH
=
";"
;
private
static
String
SPLIT
=
"`"
;
private
static
String
SPACE
=
" "
;
private
static
String
INSERT_INTO
=
" INSERT INTO "
;
private
static
String
CREATE_INTO
=
" CREATE TABLE "
;
private
static
String
VALUES
=
"VALUES"
;
private
static
String
LEFTBRACE
=
"("
;
private
static
String
RIGHTBRACE
=
")"
;
private
static
String
QUOTES
=
"'"
;
private
static
String
COMMA
=
","
;
private
static
String
DISABLEFOREIGN
=
"SET FOREIGN_KEY_CHECKS = 0;\r\n"
;
private
static
String
ABLEFOREIGN
=
"SET FOREIGN_KEY_CHECKS = 1;\r\n"
;
private
static
String
DELIMITER
=
"###################################"
;
/**
* 获取maps
*/
public
static
List
<
Map
<
String
,
Object
>>
getMaps
(
String
sql
,
Connection
connection
)
throws
SQLException
{
Statement
statement
=
connection
.
createStatement
();
ResultSet
rs
=
statement
.
executeQuery
(
sql
);
List
<
Map
<
String
,
Object
>>
list
=
new
ArrayList
<
Map
<
String
,
Object
>>();
try
{
ResultSetMetaData
md
=
rs
.
getMetaData
();
int
columnCount
=
md
.
getColumnCount
();
while
(
rs
.
next
())
{
Map
<
String
,
Object
>
rowData
=
new
HashMap
<
String
,
Object
>();
for
(
int
i
=
1
;
i
<=
columnCount
;
i
++)
{
rowData
.
put
(
md
.
getColumnName
(
i
),
rs
.
getObject
(
i
));
}
list
.
add
(
rowData
);
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
rs
!=
null
)
rs
.
close
();
rs
=
null
;
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
return
list
;
}
/**
* 获取表单列名
*/
public
static
List
<
TableColumn
>
getTableColumn
(
String
tableName
,
Connection
connection
)
throws
SQLException
{
String
columnSql
=
""
+
"\t\t SELECT\n"
+
"\t\t table_name as table_name,\n"
+
"\t\t\tcolumn_name as columnName,\n"
+
"\t\t\t( CASE WHEN ( is_nullable = 'no' && column_key != 'PRI' ) THEN '1' ELSE NULL END ) AS isRequired,\n"
+
"\t\t\t( CASE WHEN column_key = 'PRI' THEN '1' ELSE '0' END ) AS isPk,\n"
+
"\t\t\tordinal_position AS sort,\n"
+
"\t\t\tcolumn_comment as columnComment,\n"
+
"\t\t\t( CASE WHEN extra = 'auto_increment' THEN '1' ELSE '0' END ) AS isIncrement,\n"
+
"\t\t\tcolumn_type as columnType \n"
+
"\t\tFROM\n"
+
"\t\t\tinformation_schema.COLUMNS \n"
+
"\t\tWHERE\n"
+
"\t\t\ttable_schema = database()\n"
+
"\t\t\tAND table_name = \""
+
tableName
+
"\"\n"
+
"\t\tORDER BY\n"
+
"\t\t\tordinal_position\t"
;
List
<
Map
<
String
,
Object
>>
columnList
=
TableUtils
.
getMaps
(
columnSql
,
connection
);
List
<
TableColumn
>
columns
=
new
ArrayList
<>();
for
(
Map
<
String
,
Object
>
map
:
columnList
)
{
TableColumn
column
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
map
),
TableColumn
.
class
);
columns
.
add
(
column
);
}
return
columns
;
}
/**
* 获取insert语句
*/
public
static
StringBuffer
getInsertSQL
(
List
<
Map
<
String
,
Object
>>
dataList
,
List
<
TableColumn
>
columns
,
String
tableName
)
{
StringBuffer
sql
=
new
StringBuffer
();
for
(
Map
<
String
,
Object
>
map
:
dataList
)
{
sql
.
append
(
INSERT_INTO
);
sql
.
append
(
SPACE
).
append
(
tableName
).
append
(
SPACE
);
sql
.
append
(
LEFTBRACE
);
for
(
TableColumn
column
:
columns
)
{
sql
.
append
(
SPLIT
);
sql
.
append
(
column
.
getColumnName
());
sql
.
append
(
SPLIT
);
sql
.
append
(
COMMA
);
}
sql
.
deleteCharAt
(
sql
.
length
()
-
1
);
sql
.
append
(
RIGHTBRACE
);
sql
.
append
(
VALUES
);
sql
.
append
(
LEFTBRACE
);
for
(
TableColumn
column
:
columns
)
{
if
(
column
.
getColumnType
().
contains
(
"bigint"
)
||
column
.
getColumnType
().
contains
(
"int"
)
||
column
.
getColumnType
().
contains
(
"bit(1)"
))
{
if
(!
ObjectUtils
.
isEmpty
(
map
.
get
(
column
.
getColumnName
())))
{
sql
.
append
(
map
.
get
(
column
.
getColumnName
()));
}
else
{
sql
.
append
(
"0"
);
}
}
else
{
if
(!
ObjectUtils
.
isEmpty
(
map
.
get
(
column
.
getColumnName
())))
{
sql
.
append
(
"'"
).
append
(
map
.
get
(
column
.
getColumnName
())).
append
(
"'"
);
}
else
{
sql
.
append
(
"null"
);
}
}
sql
.
append
(
COMMA
);
}
sql
.
deleteCharAt
(
sql
.
length
()
-
1
);
sql
.
append
(
RIGHTBRACE
);
sql
.
append
(
BRANCH
).
append
(
BR
);
}
return
sql
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment