HSQLDB를 사용하면서 SCRIPT
command을 사용할 수 있습니다. SCRIPT
을 호출하면 데이터베이스 스키마가 들어있는 결과 집합이 반환됩니다. 경로로 파일을 전달할 수도 있으며 전체 데이터베이스를 해당 파일로 덤프합니다. 예 : SCRIPT '/path/to/dump.sql'
. 스키마와 모든 행을 원할 때 후자를 사용해야합니다. 파일이 이미있는 경우 명령이 실패합니다.
스프링 부트를 사용하는 경우 SCRIPT
명령을 실행하는 가장 쉬운 방법은 JdbcTemplate
을 사용하는 것입니다. 기본적으로 응용 프로그램에 DataSource
이 있으면 JdbcTemplate
인스턴스가 응용 프로그램 컨텍스트에서 자동으로 사용 가능합니다. 데이터베이스의 덤프를 트리거
@Controller
:
import java.io.File;
import java.io.IOException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class DumpDbController {
private final Object monitor = new Object();
private final JdbcTemplate jdbcTemplate;
@Autowired
public DumpDbController(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@RequestMapping("/dumpDb")
@ResponseBody
public void dumpDb() throws IOException {
synchronized (this.monitor) {
File dump = new File("dump.sql");
if (dump.exists()) {
dump.delete();
}
this.jdbcTemplate.execute("script '" + dump.getAbsolutePath() + "'");
}
}
}
참고 동시에 데이터베이스를 덤프하지 않는 다중 스레드를 보장하기 위해 동기화의 사용.
당신이 응용 프로그램 런타임에서 API를 사용하여 명령 줄 유틸리티처럼 sql 스크립트를 생성하여 라이브러리로 사용할 것을 제안합니다. – jmvivo