database 로직 추가
This commit is contained in:
parent
3cb391fb66
commit
a5edd57516
@ -12,7 +12,7 @@ public interface DatabaseMapper {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 데이터베이스 스키마 조회 후 [comtsysdbinfo]테이블에 데이터를 저장한다
|
* 데이터베이스 스키마 조회 후 [comtsysdbinfo]테이블에 데이터를 저장한다
|
||||||
*
|
*
|
||||||
* @param vo
|
* @param vo
|
||||||
* @return
|
* @return
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
@ -21,7 +21,7 @@ public interface DatabaseMapper {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 사용자가 입력한 연결정보를 [comttblinfo]테이블에 저장한다
|
* 사용자가 입력한 연결정보를 [comttblinfo]테이블에 저장한다
|
||||||
*
|
*
|
||||||
* @param vo
|
* @param vo
|
||||||
* @return
|
* @return
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
@ -30,7 +30,7 @@ public interface DatabaseMapper {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* [comttblinfo]테이블에 저장된 내용을 조회한다
|
* [comttblinfo]테이블에 저장된 내용을 조회한다
|
||||||
*
|
*
|
||||||
* @param vo
|
* @param vo
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@ -38,7 +38,7 @@ public interface DatabaseMapper {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Yaml 파일을 업데이트하기 위해 목록을 조회한다(pg_chameleon yaml용이나, 차후 다른 용도로 쓰임이 있다 판단되면 수정)
|
* Yaml 파일을 업데이트하기 위해 목록을 조회한다(pg_chameleon yaml용이나, 차후 다른 용도로 쓰임이 있다 판단되면 수정)
|
||||||
*
|
*
|
||||||
* @param vo
|
* @param vo
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@ -46,12 +46,28 @@ public interface DatabaseMapper {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* DB 연결 정보 검증(중복확인)
|
* DB 연결 정보 검증(중복확인)
|
||||||
*
|
*
|
||||||
* @param vo
|
* @param vo
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public int checkDbConnInfo(DatabaseInfoVO vo);
|
public int checkDbConnInfo(DatabaseInfoVO vo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 스키마 내 테이블정보를 [inst_db_tbl_info] 테이블에 저장한다.
|
||||||
|
*
|
||||||
|
* @param tbVo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public int insertDbTblInfo(TableInfoVO tbVo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 컬럼 정보를 [inst_tbl_col_info] 테이블에 저장한다.
|
||||||
|
*
|
||||||
|
* @param colVo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public int insertTblColInfo(ColumnInfoVO colVo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 등록된 DB 정보 관리 리스트
|
* 등록된 DB 정보 관리 리스트
|
||||||
*
|
*
|
||||||
|
|||||||
@ -10,7 +10,7 @@ public interface DatabaseService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 데이터베이스 스키마 조회 후 [comtsysdbinfo]테이블에 데이터를 저장한다
|
* 데이터베이스 스키마 조회 후 [comtsysdbinfo]테이블에 데이터를 저장한다
|
||||||
*
|
*
|
||||||
* @param vo
|
* @param vo
|
||||||
* @return
|
* @return
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
@ -19,7 +19,7 @@ public interface DatabaseService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 사용자가 입력한 연결정보를 [comttblinfo]테이블에 저장한다
|
* 사용자가 입력한 연결정보를 [comttblinfo]테이블에 저장한다
|
||||||
*
|
*
|
||||||
* @param vo
|
* @param vo
|
||||||
* @return
|
* @return
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
@ -28,7 +28,7 @@ public interface DatabaseService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* [comttblinfo]테이블에 저장된 내용을 조회한다(단일)
|
* [comttblinfo]테이블에 저장된 내용을 조회한다(단일)
|
||||||
*
|
*
|
||||||
* @param vo
|
* @param vo
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@ -36,7 +36,7 @@ public interface DatabaseService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Yaml 파일을 업데이트하기 위해 목록을 조회한다(pg_chameleon yaml용이나 차후 다른 용도로 쓰임이 있다 판단되면 수정)
|
* Yaml 파일을 업데이트하기 위해 목록을 조회한다(pg_chameleon yaml용이나 차후 다른 용도로 쓰임이 있다 판단되면 수정)
|
||||||
*
|
*
|
||||||
* @param vo
|
* @param vo
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@ -50,6 +50,26 @@ public interface DatabaseService {
|
|||||||
*/
|
*/
|
||||||
int checkDbConnInfo(DatabaseInfoVO vo);
|
int checkDbConnInfo(DatabaseInfoVO vo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 스키마 내 테이블정보를 [inst_db_tbl_info] 테이블에 저장한다.
|
||||||
|
*
|
||||||
|
* @param tbVo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
int insertDbTblInfo(TableInfoVO tbVo) throws Exception;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 컬럼 정보를 [inst_tbl_col_info] 테이블에 저장한다.
|
||||||
|
*
|
||||||
|
* @param colVo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public int insertTblColInfo(ColumnInfoVO colVo) throws Exception;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 등록된 DB 정보 관리 리스트
|
* 등록된 DB 정보 관리 리스트
|
||||||
|
|||||||
@ -43,6 +43,16 @@ public class DatabaseServiceImpl extends EgovAbstractServiceImpl implements Data
|
|||||||
return databaseMapper.checkDbConnInfo(vo);
|
return databaseMapper.checkDbConnInfo(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int insertDbTblInfo(TableInfoVO tbVo) throws Exception {
|
||||||
|
return databaseMapper.insertDbTblInfo(tbVo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int insertTblColInfo(ColumnInfoVO colVo) throws Exception {
|
||||||
|
return databaseMapper.insertTblColInfo(colVo);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<DatabaseInfoVO> selectRegisterdDBInfoList(DatabaseInfoVO vo) {
|
public List<DatabaseInfoVO> selectRegisterdDBInfoList(DatabaseInfoVO vo) {
|
||||||
return databaseMapper.selectRegisterdDBInfoList(vo);
|
return databaseMapper.selectRegisterdDBInfoList(vo);
|
||||||
|
|||||||
@ -1,13 +1,14 @@
|
|||||||
package egovframework.com.mtdata.schema.service.impl;
|
package egovframework.com.mtdata.schema.service.impl;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.*;
|
||||||
import java.sql.DriverManager;
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.sql.Statement;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import egovframework.com.mtdata.comtsrcdata.service.ComtsrcdataService;
|
||||||
|
import egovframework.com.mtdata.comtsrcdata.vo.ComtExtrtVO;
|
||||||
|
import egovframework.com.mtdata.comtsrcdata.vo.ComtsrcdataVO;
|
||||||
|
import egovframework.com.mtdata.database.vo.ColumnInfoVO;
|
||||||
|
import egovframework.com.mtdata.database.vo.TableInfoVO;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -25,11 +26,15 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
|
|||||||
@Resource(name = "DatabaseService")
|
@Resource(name = "DatabaseService")
|
||||||
private DatabaseService dbService;
|
private DatabaseService dbService;
|
||||||
|
|
||||||
|
@Resource(name = "ComtsrcdataService")
|
||||||
|
private ComtsrcdataService comtsrcdataService;
|
||||||
|
|
||||||
private String url;
|
private String url;
|
||||||
private String user;
|
private String user;
|
||||||
private String password;
|
private String password;
|
||||||
private int dbConnId;
|
private int dbConnId;
|
||||||
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
try {
|
try {
|
||||||
Class.forName(JDBC_DRIVER);
|
Class.forName(JDBC_DRIVER);
|
||||||
@ -46,8 +51,8 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
|
|||||||
dbConnId = dbInfoVO.getDbConnId();
|
dbConnId = dbInfoVO.getDbConnId();
|
||||||
|
|
||||||
try (Connection conn = DriverManager.getConnection(url, user, password)) {
|
try (Connection conn = DriverManager.getConnection(url, user, password)) {
|
||||||
processDatabases(conn);
|
processDatabases(conn, dbInfoVO);
|
||||||
} catch (SQLException e) {
|
} catch (Exception e) {
|
||||||
log.error("Error while connecting to the database: ", e);
|
log.error("Error while connecting to the database: ", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,48 +66,52 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
|
|||||||
// while (databases.next()) {
|
// while (databases.next()) {
|
||||||
// dbNm = databases.getString(1);
|
// dbNm = databases.getString(1);
|
||||||
// System.out.println("dbName : " + dbNm);
|
// System.out.println("dbName : " + dbNm);
|
||||||
// vo.setDbNmEn(dbNm);
|
// dbInfoVO.setDbNm(dbNm);
|
||||||
// int insertDbList = dbService.insertDbinfo(vo);
|
// int insertDbList = dbService.insertDbInfo(dbInfoVO);
|
||||||
//
|
//
|
||||||
// DatabaseMetaData metaData = conn.getMetaData();
|
// DatabaseMetaData metaData = conn.getMetaData();
|
||||||
// ResultSet tables = metaData.getTables(dbNm, null, "%", null); //catalog, schemaPattern, tableNamePattern, types
|
// ResultSet tables = metaData.getTables(dbNm, null, "%", null); //catalog, schemaPattern, tableNamePattern, types
|
||||||
// // 여기서 부터 필요한 테이블의 정보를 출력함
|
// // 여기서 부터 필요한 테이블의 정보를 출력함
|
||||||
// while(tables.next()) {
|
// while(tables.next()) {
|
||||||
// String tableName = tables.getString(3);
|
// String tableName = tables.getString(3);
|
||||||
// System.out.println("Table : " + tableName);
|
// System.out.println("Table : " + tableName);
|
||||||
//
|
//
|
||||||
// ResultSet columns = metaData.getColumns(dbNm, null, tableName, "%");
|
// ResultSet columns = metaData.getColumns(dbNm, null, tableName, "%");
|
||||||
// while (columns.next()) {
|
// while (columns.next()) {
|
||||||
// String columnName = columns.getString(4);
|
// String columnName = columns.getString(4);
|
||||||
// String columnType = columns.getString(6);
|
// String columnType = columns.getString(6);
|
||||||
// System.out.println("\tColumn: " + columnName+ " (" + columnType + ")");
|
// System.out.println("\tColumn: " + columnName+ " (" + columnType + ")");
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// } catch (SQLException e) {
|
// } catch (Exception e) {
|
||||||
// e.printStackTrace();
|
// e.printStackTrace();
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processDatabases(Connection conn) throws SQLException {
|
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')";
|
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)) {
|
try (Statement stmt = conn.createStatement(); ResultSet databases = stmt.executeQuery(selectDbSql)) {
|
||||||
|
|
||||||
|
// 스키마
|
||||||
while (databases.next()) {
|
while (databases.next()) {
|
||||||
String dbNm = databases.getString("Database");
|
String dbNm = databases.getString("Database");
|
||||||
log.info("dbName : {}", dbNm);
|
log.info("dbName : {}", dbNm);
|
||||||
|
|
||||||
DatabaseInfoVO vo = new DatabaseInfoVO();
|
DatabaseInfoVO dbVo = new DatabaseInfoVO();
|
||||||
vo.setDbConnId(dbConnId);
|
dbVo.setDbConnId(dbConnId);
|
||||||
vo.setDbNm(dbNm);
|
dbVo.setDbNm(dbNm);
|
||||||
|
|
||||||
if (dbService == null) {
|
if (dbService == null) {
|
||||||
log.error("dbService is null");
|
log.error("dbService is null");
|
||||||
}
|
}
|
||||||
int insertDbList = dbService.insertDbInfo(vo);
|
int insertDbList = dbService.insertDbInfo(dbVo);
|
||||||
|
|
||||||
if (insertDbList > 0) {
|
if (insertDbList > 0) {
|
||||||
|
dbVo.setSysId(dbConnInfoVO.getSysId());
|
||||||
|
tableProcess(conn, dbVo);
|
||||||
|
comtProcess(conn, dbVo);
|
||||||
log.info("Database info successfully inserted for: {}", dbNm);
|
log.info("Database info successfully inserted for: {}", dbNm);
|
||||||
} else {
|
} else {
|
||||||
log.warn("No database info was inserted for: {}", dbNm);
|
log.warn("No database info was inserted for: {}", dbNm);
|
||||||
@ -112,4 +121,138 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
|
|||||||
log.error("Error processing databases", e);
|
log.error("Error processing databases", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//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();
|
||||||
|
try (ResultSet tables = metaData.getTables(null, dbVo.getDbNm(), null, new String[]{"TABLE"})){
|
||||||
|
|
||||||
|
int checkSysId = dbVo.getSysId();
|
||||||
|
log.info("comtExInfo insert success : ", checkSysId);
|
||||||
|
|
||||||
|
// 테이블
|
||||||
|
while (tables.next()) {
|
||||||
|
String tbNm = tables.getString("TABLE_NAME");
|
||||||
|
|
||||||
|
TableInfoVO tbVo = new TableInfoVO();
|
||||||
|
tbVo.setDbLinkId(dbVo.getDbLinkId());
|
||||||
|
if(tbNm.equals("sys_config")){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
tbVo.setTableNm(tbNm);
|
||||||
|
log.info("TableName :", tbNm);
|
||||||
|
int insertTbCnt = dbService.insertDbTblInfo(tbVo);
|
||||||
|
|
||||||
|
if (insertTbCnt > 0) {
|
||||||
|
log.info("TABLE info 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();
|
||||||
|
colVo.setTableId(tbVo.getTableId());
|
||||||
|
colVo.setColumnNm(columnName);
|
||||||
|
colVo.setColumnType(columnType);
|
||||||
|
colVo.setNullable(nullable);
|
||||||
|
colVo.setPkey(false);
|
||||||
|
colVo.setFkey(false);
|
||||||
|
// if(pk==columnName){
|
||||||
|
// colVo.setIsPkey(false);
|
||||||
|
// }else{
|
||||||
|
// colVo.setIsPkey(false);
|
||||||
|
// }
|
||||||
|
|
||||||
|
dbService.insertTblColInfo(colVo);
|
||||||
|
System.out.println("\tColumn: " + columnName+ " (" + columnType + ")");
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
log.warn("No TABLE info was inserted for: {}", tbNm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//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"})){
|
||||||
|
|
||||||
|
// 원천데이터 추출 정보 저장
|
||||||
|
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();
|
||||||
|
|
||||||
|
while (tables.next()) {
|
||||||
|
String tbNm = tables.getString("TABLE_NAME");
|
||||||
|
if(tbNm.equals("sys_config")){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 원천데이터 저장
|
||||||
|
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) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user