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); }
}
};
반응형