繁体   English   中英

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

[英]How to create an in-memory database with schema based on an existing file database

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

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

我知道我可以打开数据库并读取其结构,然后在内存中手动创建数据库。 如果可能的话,我希望能够以一种更自动的方式做到这一点。

您可以使用命令行外壳程序.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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM