我正在开发一个 flutter 项目。我想提取并添加数据库进行备份,但我已经好几天没能做到了。我正在考虑我该如何做到这一点。我想知道我是否能做到这一点。这可能吗?如果不是,我应该这样做吗?如果使用 SQLite 时无法做到这一点,我应该使用什么?
我尝试了一切,但还是做不到。如果有人有示例项目,请与我分享。
我的理解是你只需备份文件即可。 在打开数据库“之前”执行此操作的唯一技巧 - 因为这会锁定文件。
这是我的备份脚本 - 请注意,这在网络上不起作用。
import 'dart:io';
import 'package:date_time_format/date_time_format.dart';
Future<void> backupDatabase(String pathToDatabase,
{required int version}) async {
final datePart =
DateTimeFormat.format(DateTime.now(), format: 'Y.j.d.H.i.s');
/// db file path with .bak and date/time/added
final backupPath =
'$pathToDatabase.$version.$datePart.bak';
final dbFile = File(pathToDatabase);
final backupFile = File(backupPath);
if (dbFile.existsSync()) {
await backupFile.writeAsBytes(await dbFile.readAsBytes());
print('''
Database backup completed successfully:
Original Size: ${dbFile.lengthSync()}
Backuped Size: ${backupFile.lengthSync()}
''');
} else {
print('Database file not found.');
}
}