PostgreSQL 데이터베이스를 SQLite로 변환하기: Sequel Gem 활용

Migrating Postgres to SQLite using the Sequel gem

작성자
발행일
2025년 11월 14일

핵심 요약

  • 1 PostgreSQL 데이터베이스 덤프를 `sequel` gem을 사용하여 로컬 SQLite 데이터베이스로 변환하는 방법을 설명합니다.
  • 2 외부 데이터베이스 서버 의존성을 제거하고, Rails 애플리케이션에서 사용할 수 있는 SQLite 파일을 생성하는 과정을 다룹니다.
  • 3 로컬 PostgreSQL로 덤프를 임포트한 후 `sequel` 및 `sqlite3` gem을 설치하여 간단한 명령어로 데이터베이스 변환을 완료합니다.

도입

이전 게시물에서는 Fly.io에 호스팅된 devlibrary 애플리케이션의 PostgreSQL 데이터베이스를 로컬 파일로 내보내는 방법을 다루었습니다. 본 게시물에서는 외부 데이터베이스 서버에 대한 의존성을 제거하고 개발 환경을 간소화하기 위해 이 PostgreSQL 덤프를 SQLite 데이터베이스로 변환하는 과정을 상세히 설명합니다. Ruby 생태계에서 널리 사용되는 `sequel` gem은 이러한 이기종 데이터베이스 간의 효율적인 변환을 가능하게 하는 강력한 도구입니다.

PostgreSQL 데이터베이스 덤프를 SQLite로 변환하는 과정은 몇 가지 명확한 단계로 구성됩니다. 이 절차를 통해 기존 데이터를 손실 없이 새로운 데이터베이스 형식으로 마이그레이션할 수 있습니다.

1. PostgreSQL 덤프 로컬 임포트가장 먼저, 이전에 내보낸 PostgreSQL 덤프 파일(devlibrary-dump.sql)을 로컬 PostgreSQL 데이터베이스로 가져와야 합니다. 이는 psql 명령어를 사용하여 수행됩니다.psql devlibrary_development < devlibrary-dump.sql이 명령은 devlibrary_development라는 이름의 로컬 PostgreSQL 데이터베이스에 덤프 파일의 내용을 복원하여, 변환을 위한 원본 데이터를 준비합니다.

2. 필요한 Gem 설치데이터베이스 변환 작업을 수행하기 위해 sequel gem과 대상 데이터베이스인 sqlite3 gem을 설치해야 합니다. RubyGems를 통해 다음 명령어로 쉽게 설치할 수 있습니다.gem install sequel sqlite3sequel gem은 다양한 데이터베이스 시스템을 지원하며, 데이터베이스 간의 데이터 마이그레이션 및 ORM 기능을 제공합니다. sqlite3 gem은 Ruby 애플리케이션이 SQLite 데이터베이스와 상호작용할 수 있도록 합니다.

3. PostgreSQL 데이터를 SQLite로 덤프모든 준비가 완료되면, sequel 명령어를 사용하여 로컬 PostgreSQL 데이터베이스의 내용을 SQLite3 데이터베이스 파일로 직접 덤프할 수 있습니다.sequel -C postgres://localhost/devlibrary_development \ sqlite://storage/development.sqlite3* -C 옵션은 스키마와 데이터를 모두 복사하도록 지시합니다.

  • postgres://localhost/devlibrary_development는 소스 PostgreSQL 데이터베이스의 연결 문자열입니다.
  • sqlite://storage/development.sqlite3는 대상 SQLite3 데이터베이스 파일의 경로와 연결 문자열을 지정합니다.이 명령을 실행하면 storage/development.sqlite3 경로에 새로운 SQLite 데이터베이스 파일이 생성되며, PostgreSQL 데이터베이스의 모든 테이블 구조와 데이터가 성공적으로 복사됩니다.

결론

위 단계를 통해 Fly.io에서 가져온 PostgreSQL 데이터베이스 덤프를 로컬 SQLite3 데이터베이스 파일로 성공적으로 변환했습니다. 이제 `devlibrary` 애플리케이션은 별도의 데이터베이스 서버에 대한 의존성 없이 SQLite 데이터베이스를 사용할 수 있게 되었습니다. 이는 개발 환경 설정의 간소화와 배포 유연성 증대에 크게 기여하며, 특히 소규모 프로젝트나 로컬 개발 환경에서 매우 유용하게 활용될 수 있습니다. `sequel` gem은 이처럼 이기종 데이터베이스 간의 효율적인 데이터 마이그레이션을 가능하게 하는 강력한 Ruby 도구임을 다시 한번 확인할 수 있습니다.

댓글 3

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기
주닉
1개월 전
오 정 안되면 그 방법으로 하려 생각하고 있었는데, 감사합니다.
J
jeff
2개월 전
마이그레이션을 이용해 같은 구조의 sqlite 를 만들고서 멀티 디비 설정 후 액티브레코드를 이용해 옮기는 것도 방법입니다. 그런 식으로 mysql 에서 postgresql 로 테이블을 점진적으로 옮겨봤습니다.
주닉
2개월 전
이거 보고 sequel 로 mysql -> sqlite 시도해봤는데, 부족한게 많네요.
foreign keys, indexes 안옮겨지고 json, datetime 는 선언 타입도 안걸어주고 ㅠㅠ
지금 개인 프로젝트 sqlite3 로 깔끔하게 옮기고 싶은데 직접 스크립트 짜야겠어요.