当前位置: 首页 > 面试题库 >

如何在不读取BLOB内容的情况下获取BLOB的大小

厉永宁
2023-03-14
问题内容

关于sqlite中的BLOB,我有以下问题:

  • sqlite是否跟踪BLOB的大小?
  • 我猜想它确实可以,但是然后length函数使用它,还是读取BLOB的内容?
  • 如果sqlite跟踪BLOB的大小而长度不使用它,那么是否可以通过其他功能访问该大小?

我之所以这样问,是因为我想知道是否应该实现在其他列中设置BLOB大小的触发器,我是否可以动态获取大小而不会导致sqlite读取BLOB的html" target="_blank">性能下降。


问题答案:

从来源:

** In an SQLite index record, the serial type is stored directly before
** the blob of data that it corresponds to. In a table record, all serial
** types are stored at the start of the record, and the blobs of data at
** the end. Hence these functions allow the caller to handle the
** serial-type and data blob seperately.
**
** The following table describes the various storage classes for data:
**
**   serial type        bytes of data      type
**   --------------     ---------------    ---------------
**      0                     0            NULL
**      1                     1            signed integer
**      2                     2            signed integer
**      3                     3            signed integer
**      4                     4            signed integer
**      5                     6            signed integer
**      6                     8            signed integer
**      7                     8            IEEE float
**      8                     0            Integer constant 0
**      9                     0            Integer constant 1
**     10,11                               reserved for expansion
**    N>=12 and even       (N-12)/2        BLOB
**    N>=13 and odd        (N-13)/2        text

换句话说,blob的大小在序列中,并且其长度只是“(serial_type-12)/ 2”。
该序列存储在实际的Blob之前,因此您无需读取Blob即可获取其大小。
调用sqlite3_blob_open,然后调用sqlite3_blob_bytes以获取该值。



 类似资料:
  • 我正在使用Azure Blob storage .Net client library v11。 我的azure blob容器有超过2000万个文件。列出blob并获取每个blob的大小是一项非常耗时的操作。 寻找直接获取blob容器大小的方法。

  • 我有一个应用程序,返回一个保健食品的列表。将有大约10000-20000食品(文件)在产品集合。 这些食物由多个字段使用查询。这可能是类别、子类别,当用户在搜索栏中搜索时,它是关键字数组上的arrayContains。 但是在这个例子中,他们说要使用计数器,这似乎并不实际,因为当用户搜索时,我使用的是查询关键字,当用户过滤时,我使用的是类别和子类别的混合。 谢谢

  • 问题内容: 我已经在Swift 2中使用了这种方法 但是不知道如何在不使用 NSDictionary(contentsOfFile:path)的* 情况下在Swift3中读取plist * 问题答案: Swift的本机方法是使用 ~~~~ 您还可以使用类型强制转换: 但您明确地写道: 不使用NSDictionary(contentsOf … 基本上,不要在Swift中不进行强制转换而使用,您将丢弃

  • 问题内容: 我已经能够遍历一个tar文件中的文件,但是我仍然坚持如何以字符串的形式读取那些文件的内容。我想知道如何将文件内容打印为字符串? 这是我的下面的代码 问题答案: 只需将tar.Reader用作要读取的每个文件的io.Reader。 如果您需要整个文件作为字符串: 如果您需要逐行阅读,则更好:

  • 我有一个map-reduce作业,并且reducer获得一个驻留在Azure Blob存储中的文件的绝对地址,并且reducer应该打开它并读取它的内容。在配置Hadoop集群(HDInsight)时,我添加了包含文件的存储帐户。因此,还原器必须有权访问这个Blob存储,但Blob存储不是我的作业的默认HDFS存储。我的reducer中有以下代码,但它给了我一个FileNotFound错误消息。