IntelliJ 사용중 소실된 DB 스키마, 테이블 복구하는 방법



  안녕하세요? 혼살입니다. 이번엔 IntelliJ를 사용하고 있을 경우, 포맷 또는 예기치 못한 사고로 인해 날아가버린 데이터베이스 스키마, 테이블 구조를 복구하는 방법을 알려드리죠.
  중요한 점 하나! 복구하는 건 Schema 뿐입니다. 안에 있는 레코드는 복구되지 않습니다! 그래도 이정도면 감지덕지죠.

조건

  어떠한 이유로 DB가 날라가버리기 전에, IntelliJ의 Database Tool을 사용해 해당 DB에 접속한 상태여야 합니다.

IntelliJ의 Database Tool

  IntelliJ에서 Ctrl + Shift + A -> Database 입력, 혹은 View - Tool Windows - Database를 클릭하시면 아래와 같은 Database 툴이 뜹니다.

  해당 툴은 MySQL Workbench 등 DB 관리 GUI가 없어도 IntelliJ 내부에서 DB를 눈으로 보고 관리할 수 있게 도와주는 툴입니다. 중요한 점은, 이 툴을 사용해 스키마를 열었던 적이 있다면, 해당 스키마의 정보가 프로젝트 폴더에 저장됩니다. 이 스키마 정보를 통해 DB를 복구하도록 하겠습니다.

DDL을 카피해 DB 스키마 복구하기

  글만 보면 어려울 것 같죠? 전혀! 실상은 매우 간단합니다. 위 이미지에서 superad라는 스키마는 소실된 스키마입니다. 포맷으로 완전히 날라가버린 DB죠. 해당 DB가 존재했던 Data 폴더는 포맷과 함께 완전히 날아갔고, 복구할 수 없습니다. 하지만 해당 DB의 정보는 이렇게 IntelliJ 프로젝트 폴더에 남아 Database 툴에서 보여지고 있습니다.

  그럼 우리가 해야할 것은? 해당 스키마 오른쪽 클릭, Generate and Copy DDL(Ctrl + Shift + C).

  그럼 해당 테이블의 CREATE STATEMENT가 클립보드에 복사됩니다. 메모장 등을 켜서 확인해보세요.
코멘트까지 완벽히 복사된 모습! FK, INDEX 물론 전부 유지됩니다.

  그럼, 복사가 완료됐으니 현재 DB에 적용해야겠죠? 저는 현재 dbline_new라는 DB를 사용중입니다. 해당 DB를 클릭한 뒤, 까만 SQL 버튼을 눌러 SQL 입력 창을 연 뒤, 붙여넣어주세요.

  이제 기존의 superad 스키마는 존재하지 않으니 dbline_new로 바꿔줍시다. Ctrl + R을 눌러 바꾸기를 실행하신 뒤 위에는 superad. 아래는 dbline_new(여러분의 경우, 위에는 기존 db명, 아래는 현재 db명)를 써주신 후 Replace All 버튼을 눌러주세요.

  이제 Ctrl + A를 눌러 전체 SQL을 선택하신 뒤, 실행(Ctrl + Enter)해주시면 끝! 모든 스키마 정보가 복사됐습니다.

  이제 수많은 테이블을 하나하나 수작업으로 복사할 걱정이 없어졌습니다. 굿.

댓글

이 블로그의 인기 게시물

C# 남아도는 메모리에도 불구하고 OutOfMemoryException이 발생한다면?

MySQL 데이터 타입과 Java 데이터 타입 비교/매칭

테일즈위버 OST 전곡 모음