如何序列化内存中的 SQLite 数据库?

问题描述 投票:0回答:3

我有一个内存 SQLite 数据库,我想将其序列化并发送到另一台计算机。如果不将数据库写入磁盘并从那里读取文件,这是否可能?

c sqlite
3个回答
2
投票

您可以使用在线备份 API 将内存数据库传输到在共享内存中创建的基于文件的数据库(对于 Linux,例如在 /dev/shm 中),从而避免磁盘操作。然后这个伪文件被传输到远程主机(仍然放在 /dev/shm 中),并使用在线加载 API 从基于文件的数据库传输到目标内存数据库。

参见:

http://www.sqlite.org/backup.html

http://www.sqlite.org/c3ref/backup_finish.html

AFAIK,没有 API 可以在没有中间数据库的情况下执行在线/加载。


2
投票

sqlite3 shell 程序包含一个

.dump
命令,“以 SQL 文本格式转储数据库”。您可以使用
.dump
的源代码(它是公共领域)来创建您自己的序列化器。


0
投票

默认从 SQLite 3.36 开始(或带有 SQLITE_ENABLE_DESERIALIZE

 编译时选项的 SQLite 
3.23
sqlite3_serialize()
可用于将数据库序列化为连续的内存块。

© www.soinside.com 2019 - 2024. All rights reserved.