원천데이터테이블정보, 컬럼정보, 데이터정보 new 테이블 변경/ 테이블 변경에 따른 원천데이터 저장 로직 변경

This commit is contained in:
psh 2024-06-07 17:52:13 +09:00
parent 8421fb7edc
commit c548a9c1e2
9 changed files with 118 additions and 96 deletions

View File

@ -1,5 +1,6 @@
package egovframework.com.mtdata.comtsrcdata.mapper;
import egovframework.com.mtdata.comtsrcdata.vo.ComtColVO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtExtrtVO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtTableVO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtsrcdataVO;
@ -17,17 +18,9 @@ public interface ComtsrcdataMapper {
*/
public int insertComtExtrtInfo(ComtExtrtVO vo) throws Exception;
/**
* 원천데이터를 [comtsrcdata]테이블에 저장
*
* @param vo
* @return
* @throws Exception
*/
public int insertComtSrcdataInfo(ComtsrcdataVO vo) throws Exception;
/**
* 원천데이터 테이블을 [comtsrcdatameta]테이블에 저장
* 원천데이터 테이블을 [comtsrcdatameta] 테이블에 저장
*
* @param vo
* @return
@ -37,7 +30,7 @@ public interface ComtsrcdataMapper {
/**
* 원천데이터 테이블을 [comtsrcdatameta]테이블에 저장
* 원천데이터 [comtsrcdata] 테이블에 저장
*
* @param vo
* @return
@ -45,6 +38,15 @@ public interface ComtsrcdataMapper {
*/
public int insertComtSrcdata(ComtsrcdataVO vo) throws Exception;
/**
* 원천데이터의 컬럼정보 [comtsrcdatacol] 테이블에 저장
*
* @param vo
* @return
* @throws Exception
*/
public int insertComtSrcCol(ComtColVO vo) throws Exception;
// 원천데이터 jsonb type 테스트 샘플
public int updateDatasrc(ComtsrcdataVO vo) throws Exception;

View File

@ -1,6 +1,7 @@
package egovframework.com.mtdata.comtsrcdata.service;
import egovframework.com.mtdata.comtsrcdata.dto.ComtsrcdataDTO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtColVO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtExtrtVO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtTableVO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtsrcdataVO;
@ -36,6 +37,15 @@ public interface ComtsrcdataService {
public int insertComtTabledataInfo(ComtTableVO vo) throws Exception;
/**
* 원천데이터의 컬럼정보 [comtsrcdatacol] 테이블에 저장
*
* @param vo
* @return
* @throws Exception
*/
public int insertComtSrcCol(ComtColVO vo) throws Exception;
/**
* test

View File

@ -3,6 +3,7 @@ package egovframework.com.mtdata.comtsrcdata.service.impl;
import egovframework.com.mtdata.comtsrcdata.dto.ComtsrcdataDTO;
import egovframework.com.mtdata.comtsrcdata.mapper.ComtsrcdataMapper;
import egovframework.com.mtdata.comtsrcdata.service.ComtsrcdataService;
import egovframework.com.mtdata.comtsrcdata.vo.ComtColVO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtExtrtVO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtTableVO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtsrcdataVO;
@ -33,6 +34,12 @@ public class ComtsrcdataServiceImpl extends EgovAbstractServiceImpl implements C
return comtsrcdataMapper.insertComtTabledataInfo(vo);
}
@Override
public int insertComtSrcCol(ComtColVO vo) throws Exception {
return comtsrcdataMapper.insertComtSrcCol(vo);
}
@Override
public int updateDatasrc(ComtsrcdataVO vo) throws Exception {
return comtsrcdataMapper.updateDatasrc(vo);

View File

@ -7,10 +7,10 @@ import lombok.Setter;
@Getter
@Setter
public class ComtColVO {
/** 원천데이터 테이블 ID */
private int srcDataMetaId;
/** 원천데이터 컬럼 ID*/
private int srcDataColId;
/** 원천데이터 테이블 ID */
private int srcDataMetaId;
/** 원천데이터 컬럼명 */
private String srcDataColNm;
}

View File

@ -7,10 +7,10 @@ import lombok.Setter;
@Getter
@Setter
public class ComtTableVO {
/** 원천데이터 데이터 ID */
private int srcDataId ;
/** 원천데이터 테이블 ID */
private int srcDataMetaId;
/** 원천데이터 데이터 ID */
private int extrId ;
/** 원천데이터 테이블 이름 */
private String srcDataTblNm;

View File

@ -7,10 +7,10 @@ import lombok.Setter;
@Getter
@Setter
public class ComtsrcdataVO {
/** 원천데이터 데이터 ID */
private int srcDataId ;
/** 추출 ID */
private int extrId;
/** ID */
private int srcDataId;
/** 원천데이터 테이블 정보 ID */
private int srcDataMetaId ;
/** 원천데이터 값 */
private String srcDataVl;
}

View File

@ -70,9 +70,8 @@ public class ComtsrcdataController {
}
obj.putAll(resultMap);
ComtsrcdataVO vo = new ComtsrcdataVO();
vo.setExtrId(6);
vo.setSrcDataVl(obj.toString());
service.insertComtSrcdata(vo);
// service.insertComtSrcdata(vo);
}
return "원천데이터 컨트롤러 ::";

View File

@ -1,14 +1,19 @@
package egovframework.com.mtdata.schema.service.impl;
import java.sql.*;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import egovframework.com.mtdata.comtsrcdata.service.ComtsrcdataService;
import egovframework.com.mtdata.comtsrcdata.vo.ComtColVO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtExtrtVO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtTableVO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtsrcdataVO;
import egovframework.com.mtdata.database.vo.ColumnInfoVO;
import egovframework.com.mtdata.database.vo.TableInfoVO;
import org.json.simple.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
@ -90,6 +95,7 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
// }
}
// 기관정보 스키마
private void processDatabases(Connection conn, DatabaseInfoVO dbConnInfoVO) {
String selectDbSql = "SELECT SCHEMA_NAME AS `Database` FROM information_schema.SCHEMATA WHERE SCHEMA_NAME NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')";
try (Statement stmt = conn.createStatement(); ResultSet databases = stmt.executeQuery(selectDbSql)) {
@ -111,7 +117,7 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
if (insertDbList > 0) {
dbVo.setSysId(dbConnInfoVO.getSysId());
tableProcess(conn, dbVo);
comtProcess(conn, dbVo);
log.info("Database info successfully inserted for: {}", dbNm);
} else {
log.warn("No database info was inserted for: {}", dbNm);
@ -123,7 +129,7 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
}
//psh
// 기관정보 테이블+컬럼
private void tableProcess(Connection conn, DatabaseInfoVO dbVo) throws SQLException {
// String selectTableSql = "SELECT TABLE_NAME AS `TableName` FROM information_schema.tables WHERE table_schema="+dbNm+"and table_type=`BASE TABLE`";
DatabaseMetaData metaData = conn.getMetaData();
@ -144,6 +150,7 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
tbVo.setTableNm(tbNm);
log.info("TableName :", tbNm);
int insertTbCnt = dbService.insertDbTblInfo(tbVo);
comtProcess(conn, dbVo, tbVo);
if (insertTbCnt > 0) {
log.info("TABLE info successfully inserted for: {}", tbNm);
@ -185,69 +192,70 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
//psh
private void comtProcess(Connection conn, DatabaseInfoVO dbVo) throws SQLException {
DatabaseMetaData metaData = conn.getMetaData();
try (ResultSet tables = metaData.getTables(null, dbVo.getDbNm(), null, new String[]{"TABLE"})){
// 원천데이터 추출 정보 저장
// 원천데이터 처리
private void comtProcess(Connection conn, DatabaseInfoVO dbVo, TableInfoVO tbVo) throws SQLException {
try {
// [ comtextrtblinfo ] 원천데이터 추출 정보 저장
ComtExtrtVO comExVo = new ComtExtrtVO();
comExVo.setSysId(dbVo.getSysId());
int extCnt = comtsrcdataService.insertComtExtrtInfo(comExVo);
if (extCnt > 0) {
int checkSysId = dbVo.getSysId();
log.info("comtExInfo insert success : ", checkSysId);
String dbNm = dbVo.getDbNm();
String tbNm = tbVo.getTableNm();
while (tables.next()) {
String tbNm = tables.getString("TABLE_NAME");
if(tbNm.equals("sys_config")){
break;
// [ comtsrcdatameta_new ] 원천테이블의 테이블 정보 저장
ComtTableVO comtTableVo = new ComtTableVO();
comtTableVo.setExtrId(comExVo.getExtrId());
comtTableVo.setSrcDataTblNm(tbNm);
int insertTbCnt = comtsrcdataService.insertComtTabledataInfo(comtTableVo);
if (insertTbCnt > 0) {
String selectTableSql = "SELECT * FROM "+dbNm+"."+tbNm;
Statement stmt = conn.createStatement();
ResultSet datas = stmt.executeQuery(selectTableSql);
ResultSetMetaData rsmd = datas.getMetaData();
int colCnt = rsmd.getColumnCount();
JSONObject obj = new JSONObject();
int insertDataCnt = 0;
int insertColCnt = 0;
// [ comtsrcdatacol_new ] 원천테이블의 컬럼 정보 저장
for (int i=0; i<colCnt; i++) {
ComtColVO colVo = new ComtColVO();
colVo.setSrcDataColNm(rsmd.getColumnLabel(i+1));
colVo.setSrcDataMetaId(comtTableVo.getSrcDataMetaId());
insertColCnt = comtsrcdataService.insertComtSrcCol(colVo);
}
// [ comtsrcdata_new ] 원천데이터 저장
if(insertColCnt > 0){
while (datas.next()){
Map<String, String> dataVlMap = new HashMap<>();
for (int i=0; i<colCnt; i++) {
String columnName = rsmd.getColumnLabel(i+1);
String value = datas.getString(i+1);
dataVlMap.put(columnName, value);
}
obj.putAll(dataVlMap);
ComtsrcdataVO srcVo = new ComtsrcdataVO();
srcVo.setSrcDataVl(obj.toString());
srcVo.setSrcDataMetaId(comtTableVo.getSrcDataMetaId());
insertDataCnt = comtsrcdataService.insertComtSrcdata(srcVo);
if(insertDataCnt > 0){
log.info("all data insert SUCCESS!!!!!!");
}else{
log.warn("No DATA was inserted for: {}", tbNm);
}
}
}else{
log.warn("No COLUMN info was inserted for: {}", tbNm);
}
}else{
log.warn("No Table info was inserted for: {}", tbNm);
}
// 원천데이터 저장
String selectTableSql = "SELECT * FROM "+dbNm+"."+tbNm;
Statement stmt = conn.createStatement();
ResultSet datas = stmt.executeQuery(selectTableSql);
while (datas.next()){
int i = 0;
ComtsrcdataVO comSrcVo = new ComtsrcdataVO();
comSrcVo.setExtrId(comExVo.getExtrId());
String value = datas.getObject(i).toString();
// comSrcVo.setSrcDataVl();
int insertTbCnt = comtsrcdataService.insertComtSrcdataInfo(comSrcVo);
i++;
}
// if (insertTbCnt > 0) {
//
// log.info("COMTSRCDATA successfully inserted for: {}", tbNm);
// ResultSet columns = metaData.getColumns(null, dbVo.getDbNm(), tbNm, "%");
// ResultSet pk = metaData.getPrimaryKeys(null, dbVo.getDbNm(), tbNm);
// 컬럼
// while (columns.next()) {
// String columnName = columns.getString(4);
// String columnType = columns.getString(6);
// boolean nullable = columns.getInt(11) == 0 ? false : true;;
//
// ColumnInfoVO colVo = new ColumnInfoVO();
// dbService.insertTblColInfo(colVo);
// System.out.println("\tColumn: " + columnName+ " (" + columnType + ")");
// }
// } else {
// log.warn("No TABLE info was inserted for: {}", tbNm);
// }
}
}
} catch (Exception e) {

View File

@ -26,35 +26,31 @@
(#{extrId}, CURRENT_TIMESTAMP, #{sysId})
</insert>
<insert id="insertComtSrcdataInfo" parameterType="ComtsrcdataVO">
<selectKey resultType="int" keyProperty="srcDataId" order="BEFORE">
SELECT nextval('comtsrcdata_extr_tbl_id_seq') as srcDataId
</selectKey>
insert into comtsrcdata
(src_data_id, extr_id, src_data_vl)
values
(#{srcDataId}, #{extrId}, #{srcDataVl})
</insert>
<insert id="insertComtTabledataInfo" parameterType="ComtTableVO">
<selectKey resultType="int" keyProperty="srcDataId" order="BEFORE">
SELECT nextval('comtsrcdatameta_src_data_meta_id_seq') as srcDataId
<selectKey resultType="int" keyProperty="srcDataMetaId" order="BEFORE">
SELECT nextval('comtsrcdatameta_new_src_data_meta_id_seq') as srcDataMetaId
</selectKey>
insert into comtsrcdatameta (src_data_meta_id, src_data_id, src_data_tbl_nm)
values (#{srcDataMetaId}, #{srcDataId}, #{srcDataTblNm})
insert into comtsrcdatameta_new (src_data_meta_id, extr_id, src_data_tbl_nm)
values (#{srcDataMetaId}, #{extrId}, #{srcDataTblNm})
</insert>
<insert id="insertComtSrcdata" parameterType="ComtsrcdataVO">
<selectKey resultType="int" keyProperty="srcDataId" order="BEFORE">
SELECT nextval('comtsrcdata_extr_tbl_id_seq') as srcDataId
SELECT nextval('comtsrcdata_new_src_data_id_seq') as srcDataId
</selectKey>
insert into comtsrcdata (src_data_id, extr_id, src_data_vl)
values (#{srcDataId}, #{extrId}, ( (#{srcDataVl})::jsonb ) )
insert into comtsrcdata_new (src_data_id, src_data_meta_id, src_data_vl)
values (#{srcDataId}, #{srcDataMetaId}, ( (#{srcDataVl})::jsonb ) )
</insert>
<insert id="insertComtSrcCol" parameterType="ComtColVO">
<selectKey resultType="int" keyProperty="srcDataColId" order="BEFORE">
SELECT nextval('comtsrcdatacol_new_src_data_col_id_seq') as srcDataColId
</selectKey>
insert into comtsrcdatacol_new (src_data_col_id, src_data_meta_id, src_data_col_nm)
values (#{srcDataColId}, #{srcDataMetaId}, #{srcDataColNm} )
</insert>
<!--sample-->
<update id="updateDatasrc" parameterType="ComtsrcdataVO">
update comtsrcdata
set src_data_vl= ( (#{srcDataVl})::jsonb )