gpt4 book ai didi

sql - 如何找出 sqlite 数据库中的记录 (BLOB) 使用了多少物理空间?

转载 作者:行者123 更新时间:2023-12-03 17:48:57 26 4
gpt4 key购买 nike

我使用 Ditto 作为我的剪贴板历史管理器,数据库现在大约为 5.5 gig。那可能太大了;o) 删除一堆截图并在数据库上进行压缩和修复后,它仍然太大。

我正在查看下面的主数据表的表定义。

CREATE TABLE Data(lID INTEGER PRIMARY KEY AUTOINCREMENT, lParentID INTEGER, strClipBoardFormat TEXT, ooData BLOB)

sqlite(版本3.7.13)有没有办法找出记录使用了多少空间,以便我可以删除它/它们?

最佳答案

length(ooData)应该做的伎俩。

来自 documentation :

length(X): For a string value X, the length(X) function returns the number of characters (not bytes) in X prior to the first NUL character. Since SQLite strings do not normally contain NUL characters, the length(X) function will usually return the total number of characters in the string X. For a blob value X, length(X) returns the number of bytes in the blob. If X is NULL then length(X) is NULL. If X is numeric then length(X) returns the length of a string representation of X.



所以你的查询看起来像这样,我相信:
SELECT id_field, length(blobData) AS size, blobdata FROM your_table 
WHERE blobData IS NOT NULL

由于您只对数据库中的“最大”文件真正感兴趣,因此您可能只想选择最大的文件,因此您需要添加这样的约束
AND size > 1000000;

关于sql - 如何找出 sqlite 数据库中的记录 (BLOB) 使用了多少物理空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20410372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com