on
자바로 파일변환 및 쿼리문 txt생성!
자바로 파일변환 및 쿼리문 txt생성!
반응형
##기존에 다른 동료가 하는 프로젝트에서 DB를 부분이관을 진행했는데 파일다운로드에 오류가 발생했다..
알고봤더니 기존로직은 리눅스 서버에 파일업로드를 할 경우 한글파일이든 영어든 모두 임시의 값으로 변환되어 서버에 저장이되는데(ex 보통 안겹치기위해 날짜+randomString->20210915_abcdefg 와 같은형태) 한글로 가져와서 한글파일을 못찾는 사태가 발생했다.
모두가 그런게 아니고 새로 가져온부분만 안되기때문에 한글에대한 설정을 서버에 맞춰서 해보기보단 기존껄 자바에서 재 가공해서 넣기로함.
특정 폴더에 있는 파일만 오류를 발생시켰으므로 그 폴더에 있는파일 데이터만 Java에서 뽑아내고
SELECT * FROM table WHERE DELETE_YN = 'N' AND FILE_FOLDER LIKE '%/admin_upload%'
##수행로직##
컨트롤러를 임시로 태워서 해당 주소로 들어갔을경우 자동으로 for문을 돌아 원하는 형태의 쿼리문을 만들어주도록하여 가져가서 테스트를 진행했다!!
@RestController public class fileTestController { @Resource(name="fileTestMapper") FileTestMapper fileTestMapper; @RequestMapping("/file/test") public String fileTest() throws SQLException, IOException{ //바꿀파일이름 형식 년월일+for문 i의 숫자 ex) 2021813_0~~~2021813_570까지 Calendar cal = Calendar.getInstance(); //오늘날짜 지정 String year = cal.get(cal.YEAR)+""; //년 String month = cal.get(cal.MONTH)+1+""; //월 String day = cal.get(cal.DATE)+""; //일 String madeDate= year+month+day+"_"; List> list = fileTestMapper.fileTestListByFolder(); StringBuffer sb = new StringBuffer(); StringBuffer sb2 = new StringBuffer(); //HashMap이라 중복되는 것 제거되버림 for(int i=0; i
"); //생성해야하는 업데이트문 예시 UPDATE FROM table SET FILE_MASK = '' WHERE FILE_ID=''; sb2.append("UPDATE KHOME.T_BOARD SET BD_EXT1 ='/admin_upload/"); sb2.append(FILE_MASK+"' "); sb2.append("WHERE BD_EXT2 ='"); sb2.append(FILE_NAME+"' "); sb2.append("AND FILE_ID ='"); sb2.append(FILE_ID+"'"); sb2.append(";"); sb2.append("\r
"); //파일변환처리 renameFile(FILE_NAME, FILE_MASK); } //쿼리저장용 텍스트파일 경로 String filePath = "C:\\adminuploadquery\\filequery.txt"; FileWriter fileWriter = new FileWriter(filePath); fileWriter.write(sb.toString()); fileWriter.close(); String filePath2 = "C:\\adminuploadquery\\boardquery.txt"; FileWriter fileWriter2 = new FileWriter(filePath2); fileWriter2.write(sb2.toString()); fileWriter2.close(); return "테스트용 URL"; } //파일 이름 변경 메서드 public void renameFile(String filename, String newFilename) { //읽을파일 경로 String path = "C:\\adminupload\\"; //읽을파일 이름 String filename1 = path+filename; //바꿀파일 저장경로 String path2 = "C:\\adminupload\\changed\\"; //바굴파일 이름 String filename2 = path2+newFilename; File file = new File( filename1 ); File fileNew = new File( filename2 ); if( file.exists() ) file.renameTo( fileNew ); } }
반응형
from http://lollaziest.tistory.com/115 by ccl(A) rewrite - 2021-09-15 15:02:02