2012-03-15 241 views
0

我有一个sqlite数据库是打开在:内存:需要流/序列化到另一个文件中途。sqlite保存/加载数据库到文件流

例如:

// Some data 
// more data 
// SQLITE 
// more data 
// more data 

什么是做到这一点的最好方法是什么?一种选择是使用sqlite_backup代码写入临时文件,然后将文件读回并流出,然后删除临时文件。这样做相对容易实施,但并不完全有效。

另一种选择是通过表格手动写出数据表,但这很痛苦。

是否有另一种方法直接从内存中流式传输数据库?我的文件流使用boost :: iostreams :: filtering_ostream作为基础。

谢谢!此外,如果任何人有任何处理不同版本的列名称可能会改变/添加等,这将是伟大的!

+1

sqllite命令行实用程序实现了一个'.dump'命令流到标准输出。如果你能弄清楚这个命令是如何实现的,你可以自己做同样的事情。当然,输出是一系列SQL语句,它们将在执行时重新创建数据。 :-) – Omnifarious 2012-03-15 20:06:34

+0

@Omnifarious:是的,它给了我创建每个表的sql语句,如果我从sqlite_master中选择,但没有其他东西:(即使这样,我真的不想只保存SQL语句,我看起来好像效率会很低 – Jordan 2012-03-15 20:46:40

+1

它效率低下,但它非常便携,它是我将测试数据库保存到版本控制的方式。:-) – Omnifarious 2012-03-15 21:34:23

回答

0

是的,我只是要手动序列化一切,并在加载时重新生成INSERT/CREATE语句。希望有一个更好的方式,虽然...

相关问题