에서 파일에 쓰기 :만들기 선택하고 내가 아주 간단이 그루비 코드가 빠르게 그루비
sql.eachRow("""SELECT
LOOP_ID,
FLD_1,
... 20 more fields
FLD_20
FROM MY_TABLE ORDER BY LOOP_ID"""){ res->
if(oldLoopId != res.loop_id){
oldLoopId = res.loop_id
fileToWrite = new File("MYNAME_${type}_${res.loop_id}_${today.format('YYYYmmDDhhMM')}.txt")
fileToWrite.append("20 fields header\n")
}
fileToWrite.append("${res.FLD_1}|${res.FLD_2}| ... |${res.FLD_20}\n");
}
}
이이 테이블에서 일을 선택하고 데이터베이스에 기록합니다. 각각의 새로운 loop_id에 대해 새로운 파일을 생성합니다. 문제는 50MB 파일을 작성하는 데 약 15 분이 걸린다는 것입니다.
어떻게 더 빨리 만들 수 있습니까? 대신 직접 append
을 사용하는 BufferedWriter
에
File.append는 작성기를 열고 파일의 끝으로 이동하여 한 줄을 씁니다. 이 대신 새 파일에 대한 작성자를 작성하고 여기에 작성하십시오 (새 작성자를 작성하기 전에 닫는 것을 잊지 마십시오). –