database 로직 추가
This commit is contained in:
parent
3cb391fb66
commit
a5edd57516
@ -52,6 +52,22 @@ public interface DatabaseMapper {
|
||||
*/
|
||||
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 정보 관리 리스트
|
||||
*
|
||||
|
||||
@ -50,6 +50,26 @@ public interface DatabaseService {
|
||||
*/
|
||||
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 정보 관리 리스트
|
||||
|
||||
@ -43,6 +43,16 @@ public class DatabaseServiceImpl extends EgovAbstractServiceImpl implements Data
|
||||
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
|
||||
public List<DatabaseInfoVO> selectRegisterdDBInfoList(DatabaseInfoVO vo) {
|
||||
return databaseMapper.selectRegisterdDBInfoList(vo);
|
||||
|
||||
@ -1,13 +1,14 @@
|
||||
package egovframework.com.mtdata.schema.service.impl;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.sql.*;
|
||||
|
||||
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.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -25,11 +26,15 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
|
||||
@Resource(name = "DatabaseService")
|
||||
private DatabaseService dbService;
|
||||
|
||||
@Resource(name = "ComtsrcdataService")
|
||||
private ComtsrcdataService comtsrcdataService;
|
||||
|
||||
private String url;
|
||||
private String user;
|
||||
private String password;
|
||||
private int dbConnId;
|
||||
|
||||
|
||||
static {
|
||||
try {
|
||||
Class.forName(JDBC_DRIVER);
|
||||
@ -46,8 +51,8 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
|
||||
dbConnId = dbInfoVO.getDbConnId();
|
||||
|
||||
try (Connection conn = DriverManager.getConnection(url, user, password)) {
|
||||
processDatabases(conn);
|
||||
} catch (SQLException e) {
|
||||
processDatabases(conn, dbInfoVO);
|
||||
} catch (Exception e) {
|
||||
log.error("Error while connecting to the database: ", e);
|
||||
}
|
||||
|
||||
@ -61,8 +66,8 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
|
||||
// while (databases.next()) {
|
||||
// dbNm = databases.getString(1);
|
||||
// System.out.println("dbName : " + dbNm);
|
||||
// vo.setDbNmEn(dbNm);
|
||||
// int insertDbList = dbService.insertDbinfo(vo);
|
||||
// dbInfoVO.setDbNm(dbNm);
|
||||
// int insertDbList = dbService.insertDbInfo(dbInfoVO);
|
||||
//
|
||||
// DatabaseMetaData metaData = conn.getMetaData();
|
||||
// ResultSet tables = metaData.getTables(dbNm, null, "%", null); //catalog, schemaPattern, tableNamePattern, types
|
||||
@ -80,29 +85,33 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
|
||||
//
|
||||
// }
|
||||
// }
|
||||
// } catch (SQLException e) {
|
||||
// } catch (Exception e) {
|
||||
// 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')";
|
||||
try (Statement stmt = conn.createStatement(); ResultSet databases = stmt.executeQuery(selectDbSql)) {
|
||||
|
||||
// 스키마
|
||||
while (databases.next()) {
|
||||
String dbNm = databases.getString("Database");
|
||||
log.info("dbName : {}", dbNm);
|
||||
|
||||
DatabaseInfoVO vo = new DatabaseInfoVO();
|
||||
vo.setDbConnId(dbConnId);
|
||||
vo.setDbNm(dbNm);
|
||||
DatabaseInfoVO dbVo = new DatabaseInfoVO();
|
||||
dbVo.setDbConnId(dbConnId);
|
||||
dbVo.setDbNm(dbNm);
|
||||
|
||||
if (dbService == null) {
|
||||
log.error("dbService is null");
|
||||
}
|
||||
int insertDbList = dbService.insertDbInfo(vo);
|
||||
int insertDbList = dbService.insertDbInfo(dbVo);
|
||||
|
||||
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);
|
||||
@ -112,4 +121,138 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
|
||||
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