티스토리 뷰
// * 폴더 내 모든 sql 가져와서.. (정렬 안됨)
String sPath = "I:\\180405_Winuser백업\\180404_IrsPDB_sqlDump";
String sBat = "restoreAll.bat";
String sDbName = "130514cidogir";
// 1. SQL 파일 목록 가져오기
File fDir = new File(sPath);
File[] afSql= fDir.listFiles(new FilenameFilter() {
// sql 파일만 가져옴
@Override
public boolean accept(File dir, String name) {
return name.matches(".*\\.sql");
}
});
// 2. 모두 실행하는 BAT 생성
File fBat = new File(fDir, sBat);
FileOutputStream fos = new FileOutputStream(fBat);
for(File f : afSql) {
String sCmd = "mysql -f -uroot -p1111 "+sDbName+"<"+f.getAbsolutePath() +"\r\n";
IOUtils.write(("@echo "+f.getAbsolutePath() + ">CON\r\n").getBytes("MS949"), fos);
IOUtils.write(sCmd.getBytes("MS949"), fos);
// 시간표시 echo %date% %time%
}
fos.close();
// 실행할땐
// restoreAll.bat > log.txt 2>&1
// 이래야 배치파일 실행 로그 파일 생성
//
// 2>&1 없으면 실행명령만 기록되고 결과가 기록 안 됨.
// 참고 : https://superuser.com/questions/698496/log-an-entire-batch-file-output?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
// http://www.robvanderwoude.com/battech_redirection.php
* 이름 순으로 지정하여 생성
String sPath = "G:\\180404_IrsPDB_sqlDump\\cio\\";
String sBatPath = "/home/udell/";
String sBat = "restoreAll_6.bat";
String sDbName = "130514cidogir";
File fDir = new File(sBatPath);
// 2. 모두 실행하는 BAT 생성
File fBat = new File(sBatPath, sBat);
FileOutputStream fos = new FileOutputStream(fBat);
for(int i=0;i<=31729;i++) {
int iTarget = i*1000 + 1;
String sFile = sPath + "back_concrete_info_overview"+iTarget + ".sqlNoDdl";
String sCmd=""
+ "@echo "+sFile+ "/%date% %time% >CON \r\n"
+ "mysql -f -uroot -p1111 "+sDbName+"<\""+sFile +"\"\r\n"
+ "@echo %date% %time% \r\n";
IOUtils.write(sCmd.getBytes("MS949"), fos);
System.out.print(sCmd);
}
fos.close();
'SW개발 > Database' 카테고리의 다른 글
MySQL 8 VS MariaDB 10.2 / 3천만 대량 Row Restore 작업후기 (0) | 2018.04.26 |
---|---|
폴더내 SQL 파일 CREATE/DROP 부분 모두 제외하기 (자바) (0) | 2018.04.25 |
MySQL + MariaDB 같이 설치 (0) | 2018.04.24 |
MySQL 5.6 -> MariaDB 10.0 실패 (0) | 2018.04.23 |
mysql 백업 / 파일 분할해서 dump 하는 방법 (0) | 2018.04.04 |