我在使用c ++ linux的应用程序中使用sqlite db。我需要在另一台机器上复制sqlite db。
为此,由于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();
答案 0 :(得分:1)
您可能希望查看内置的SQLite Backup API,它允许在线备份数据库。这可以用于创建复制形式,您当然必须自己将文件移动到远程位置(如果需要)。最好使用sqlite_backup_*()
函数而不是直接访问文件,因为sqlite函数将锁定数据库。
答案 1 :(得分:0)
我知道原帖是旧的,但这可能有助于其他有类似问题的人。我不确定这是否是您想要的,但如果您需要跨多个服务器(分布式)进行复制,Rqlite可能适合您。
rqlite是一个分布式关系数据库,它使用SQLite作为其存储引擎。 rqlite使用Raft在SQLite数据库的所有实例之间达成共识,确保对系统所做的每一次更改都是针对法定数量的SQLite数据库进行的,或者根本不进行任何更改。
你可以在这里阅读更多内容: http://www.philipotoole.com/replicating-sqlite-using-raft-consensus/
希望它有所帮助,