[flutter] 플러터(sqflite)에서의 데이터베이스 백업 및 복원 기능

플러터 앱에서 데이터베이스는 중요한 정보를 담고 있는데, 때때로 데이터가 손실되는 상황을 대비하여 데이터베이스를 백업하고 복원하는 기능이 필요할 수 있습니다. 이번 게시물에서는 sqflite를 사용하여 플러터(Flutter) 앱에서 데이터베이스의 백업과 복원을 하는 방법에 대해 알아보겠습니다.

1. 데이터베이스 백업

데이터베이스를 백업하는 방법은 매우 간단합니다. 먼저, sqflite 패키지에서 현재 데이터베이스 파일을 읽어와서 다른 위치에 저장하면 됩니다. 이를 위해 path_provider 패키지를 사용하여 외부 저장소에 백업 파일을 생성할 수 있습니다.

다음은 데이터베이스를 백업하는 예제 코드입니다.

import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart';
import 'package:sqflite/sqflite.dart';
import 'dart:io';
import 'package:flutter/services.dart';

Future<String> backupDatabase() async {
  // 현재 데이터베이스 파일 경로
  var databasesPath = await getDatabasesPath();
  String path = p.join(databasesPath, 'your_database.db');

  // 외부 저장소 디렉토리 경로
  var externalPath = await getExternalStorageDirectory();
  String newPath = p.join(externalPath.path, 'backup.db');

  // 파일 복사
  File newFile = File(newPath);
  if (newFile.existsSync()) {
    newFile.deleteSync();
  }
  newFile.createSync();
  newFile.writeAsBytesSync(File(path).readAsBytesSync());

  return newPath;
}

위 코드는 backupDatabase 함수를 통해 데이터베이스를 백업하는 과정을 보여줍니다.

2. 데이터베이스 복원

백업된 데이터베이스를 복원하는 것은 백업과 비슷한 방식으로 가능합니다. 백업 파일을 읽어와서 현재 데이터베이스 파일에 덮어씌우면 됩니다. 아래는 데이터베이스를 복원하는 예제 코드입니다.

Future<void> restoreDatabase(String backupFilePath) async {
  // 현재 데이터베이스 파일 경로
  var databasesPath = await getDatabasesPath();
  String path = p.join(databasesPath, 'your_database.db');

  // 백업된 데이터베이스 파일을 읽어와서 현재 데이터베이스 파일에 덮어씌우기
  File backupFile = File(backupFilePath);
  if (backupFile.existsSync()) {
    File(path).writeAsBytesSync(backupFile.readAsBytesSync());
  }
}

위 코드는 restoreDatabase 함수를 통해 데이터베이스를 복원하는 과정을 나타냅니다.

3. 요약

플러터(sqflite)를 사용하여 데이터베이스를 백업하고 복원하는 방법에 대해 알아보았습니다. 데이터베이스를 백업하고 복원함으로써 사용자의 소중한 데이터를 안전하게 보호할 수 있습니다.

이상으로 데이터베이스 백업 및 복원에 대한 내용을 마치겠습니다. 문의사항이 있으시다면 언제든지 질문해주세요.