dev/java 배포

java mssql to file #008

strange-dev 2025. 5. 6. 21:18
반응형
Mssql 조회 후 파일에 저장
  • 아래 #005에 작성된 내용에서 Runnable task 부분만 변경합니다.

 

2025.04.29 - [dev/java 배포] - java properties 조회 #005

 

java properties 조회 #005

db 설정 파일 경로 등 properties에 설정합니다. app.properties 메뉴 구조properties 조회import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import java.io.IOException;import java.io.InputStream;import java.time

st-d.tistory.com

소스 코드
Runnable task = () -> {
    Connection sqlServerConn = null;
    PreparedStatement sqlServerStmt = null;
    ResultSet rs = null;
    BufferedWriter bw = null;

    try {
        // MS SQL Server 연결
        String sqlServerUrl = dbProps.getProperty("sqlserver.url");
        String sqlServerUser = dbProps.getProperty("sqlserver.username");
        String sqlServerPassword = dbProps.getProperty("sqlserver.password");
        //String sqlServerDriver = dbProps.getProperty("sqlserver.driver");
        //Class.forName(sqlServerDriver); // 드라이버 클래스 로드
        sqlServerConn = DriverManager.getConnection(sqlServerUrl, sqlServerUser, sqlServerPassword);

        // 데이터 조회 쿼리 실행
        String selectQuery = "SELECT CODE_GUBUN, COM_CODE ,COM_CODE_NM ,ORD ,DEF_VAL ,USE_YN ,MOD_YN ,DSC ,REG_ID FROM common";
        sqlServerStmt = sqlServerConn.prepareStatement(selectQuery);
        rs = sqlServerStmt.executeQuery();

        // MS SQL Server 조회 결과를 텍스트 파일로 저장
        String outputTextFilePath = dbProps.getProperty("output.textfile.path");
        bw = new BufferedWriter(new FileWriter(outputTextFilePath));
        ResultSetMetaData metaData = rs.getMetaData();
        int columnCount = metaData.getColumnCount();
        for (int i = 1; i <= columnCount; i++) {
            bw.write(metaData.getColumnName(i));
            if (i < columnCount) {
                bw.write(",");
            }
        }
        bw.newLine();

        while (rs.next()) {

            //bw.write(rs.getString("CODE_GUBUN") + "," + rs.getString("COM_CODE"));

            for (int i = 1; i <= columnCount; i++) {
                String value = rs.getString(i);
                if (value != null) {
                    bw.write(value);
                } else {
                    bw.write(""); // 또는 다른 기본값 (예: "NULL")
                }
                if (i < columnCount) {
                    bw.write(",");
                }
            }
            bw.newLine();
        }
        System.out.println("MS SQL Server 데이터 조회 결과를 " + outputTextFilePath + " 에 저장 완료 - 현재 시간: " + LocalDateTime.now());

    } catch (SQLException e) { logger.error("SQL Exception 발생", e);
    } catch (IOException e) { logger.error("텍스트 파일 읽기/쓰기 오류 발생", e);
    } finally {
        try { if (bw != null) bw.close(); } catch (IOException e) { logger.error("BufferedWriter close Exception 발생", e); }
        try { if (rs != null) rs.close(); } catch (SQLException e) { logger.error("rs Exception 발생", e); }
        try { if (sqlServerStmt != null) sqlServerStmt.close(); } catch (SQLException e) { logger.error("sqlServerStmt Exception 발생", e); }
        try { if (sqlServerConn != null) sqlServerConn.close(); } catch (SQLException e) { logger.error("sqlServerConn Exception 발생", e); }
    }
};
반응형