1

我正在使用 c++ linux 在我的应用程序中的 sqlite db 中工作。我需要在另一台机器上复制 sqlite 数据库。

为此,由于 sqlite 没有复制机制,也没有任何网络 API,我想使用 c++ fstream 读取 sqlite db 文件并在另一台机器上创建一个新的 db 文件。

我挣扎了一天。

任何人都可以在这方面帮助我。

下面是代码:

 ifstream _fstream;
_fstream.open("Sourcefile",ios::in); 
 ofstream _ostream;
_ostream.open("ReplicatedFile",ios::out);
_ostream << _fstream;
_ostream.close();
_fstream.close();
4

2 回答 2

1

您可能想查看允许在线备份数据库的内置SQLite Backup API 。这可用于创建一种复制形式,您当然必须自己将文件移动到远程位置(如果需要)。最好使用sqlite_backup_*()函数而不是直接访问文件,因为 sqlite 函数会锁定数据库。

于 2012-05-30T10:00:47.450 回答
0

我知道原来的帖子很旧,但这可能会帮助其他有类似问题的人。我不确定这是否是您想要的,但如果您需要跨多个服务器(分布式)进行复制,Rqlite可能适合您。

rqlite 是一个分布式关系数据库,它使用 SQLite 作为其存储引擎。rqlite 使用 Raft 在 SQLite 数据库的所有实例之间达成共识,确保对系统所做的每一次更改都针对 SQLite 数据库的法定人数,或者根本没有。

你可以在这里阅读更多: http ://www.philiptoole.com/replicating-sqlite-using-raft-consensus/

希望能帮助到你,

于 2016-10-24T10:33:06.627 回答