sqlite保存/加载数据库到文件流
问题描述:
我有一个sqlite数据库是打开在:内存:需要流/序列化到另一个文件中途。sqlite保存/加载数据库到文件流
例如:
// Some data
// more data
// SQLITE
// more data
// more data
什么是做到这一点的最好方法是什么?一种选择是使用sqlite_backup代码写入临时文件,然后将文件读回并流出,然后删除临时文件。这样做相对容易实施,但并不完全有效。
另一种选择是通过表格手动写出数据表,但这很痛苦。
是否有另一种方法直接从内存中流式传输数据库?我的文件流使用boost :: iostreams :: filtering_ostream作为基础。
谢谢!此外,如果任何人有任何处理不同版本的列名称可能会改变/添加等,这将是伟大的!
答
是的,我只是要手动序列化一切,并在加载时重新生成INSERT/CREATE语句。希望有一个更好的方式,虽然...
sqllite命令行实用程序实现了一个'.dump'命令流到标准输出。如果你能弄清楚这个命令是如何实现的,你可以自己做同样的事情。当然,输出是一系列SQL语句,它们将在执行时重新创建数据。 :-) – Omnifarious 2012-03-15 20:06:34
@Omnifarious:是的,它给了我创建每个表的sql语句,如果我从sqlite_master中选择,但没有其他东西:(即使这样,我真的不想只保存SQL语句,我看起来好像效率会很低 – Jordan 2012-03-15 20:46:40
它效率低下,但它非常便携,它是我将测试数据库保存到版本控制的方式。:-) – Omnifarious 2012-03-15 21:34:23