我使用以下代码在内存中创建了一个SQLite 数据库:
my $dsn = "dbi:SQLite:dbname=:memory:"; # better in read/write operations performance than disk-file saved database.
my $user = "";
my $password = "";
my $dbh = DBI->connect($dsn, $user, $password,{});
#… Doing some processing on the database (Creating tables/Inserting rows/Updating fields)
#… After finishing, I need to save the database to a local disk file.
我需要做的是,在使用内存数据库完成操作后,将其保存到磁盘文件
file.db
中。
更新(回答摘要):
• 有用的命令:感谢Schwern的回答和评论。
$dbh->sqlite_backup_to_file( $file_path )
:将内存中的数据库复制到文件中。$dbh->sqlite_backup_from_file( $file_path )
:将文件中的数据库复制到内存中。my $dbh = DBI->connect($dsn, $user, $password,{AutoCommit => 0})
:禁用 AutoCommit 看起来是优化性能的更好和更简单的选择,就像使用前两个命令一样。我只需要确保在关闭 AutoCommit 时,SQLite SELECT 操作不会执行任何磁盘活动(其他问题)。
sqlite_backup_from_file
将数据库加载到现有的内存数据库中。 - Schwern