我在SQLite应用程序中有大量blob,需要以分段方式更新这些blob的小段.有点像"用数据D更新blob B的字节X到Y",这可以在其他使用Blob操作函数的数据库中完成,但我找不到像SQLite这样的东西,我卡住了吗?或者SQLite有办法操纵Blob?
谢谢.
这不是你的问题的直接答案,但我有一些使用随机访问SQLite中的(大)blob的经验,我建议你不要使用它,如果可以的话.原因如下:
Blob完全破坏了SQL查询格式.如果你的blob数据需要任何类型的处理,它肯定在某些时候需要过滤.无论你采用什么机制来处理SQL中的过滤,在这方面都是无用的.
处理包含在与原始文件中的二进制数据相对的数据库中的二进制blob限制了您的选择.您将无法从多个进程中同时随机读取和写入数据,这对于文件是可能的.您不能使用任何处理此数据的工具,只提供文件I/O接口.您不能截断或调整blob的大小.文件更加通用.
将所有内容包含在一个文件中似乎很方便,因为它简化了备份和传输,但使用blob的痛苦根本不值得.
因此,作为您的律师,我建议您将blob作为原始文件写入文件系统,并仅在数据库中存储对文件名的引用.如果你的斑点很小并且保证不会长大,那就忘掉我的建议.