如何使用基于现有文件数据库的模式创建内存数据库

我有一个现有的数据库,该结构在整个应用程序中使用。 数据库的实例定期轮换。 我有一个数据库文件template.sqlite ,它用作所有新创建的数据库的模板。 我想使用它,而不是创建脚本,因此我只需要维护一个文件,即空数据库模板本身。

我想基于该模板文件创建一个具有相同结构的内存数据库。

我知道我可以打开数据库并读取它的结构,然后在内存中手动创建数据库。 如果可能的话,我希望能够以更自动的方式进行。

您可以使用命令行shell的.dump命令来创建一组可以执行的SQL命令。

或者,您可以使用备份API将模板复制到新数据库中。

作为所有寻求回答这个问题的快速解决方案:一些C代码可以解决这个问题:

 int loadOrSaveDb(sqlite3 *pInMemory, const char *zFilename){ int rc; sqlite3 *pFile; /* Database connection opened on zFilename */ sqlite3_backup *pBackup; /* Backup object used to copy data */ rc = sqlite3_open(zFilename, &pFile); if( rc==SQLITE_OK ) { pBackup = sqlite3_backup_init(pInMemory, "main", pFile, "main"); if( pBackup ){ (void)sqlite3_backup_step(pBackup, -1); (void)sqlite3_backup_finish(pBackup); } rc = sqlite3_errcode(pTo); } (void)sqlite3_close(pFile); return rc; }