gpt4 book ai didi

python - sqlite3 是否压缩数据?

转载 作者:IT老高 更新时间:2023-10-28 20:25:23 25 4
gpt4 key购买 nike

我有一个 7.4Gb 的 csv 文件。将其转换为带有 python script 的 sqlite 数据库后输出 DB 为 4.7Gb,约为原始大小的 60%。

csv 有大约 150,000,000 行。它有标题:

tkey,ipaddr,healthtime,numconnections,policystatus,activityflag

每一行看起来都像

261846,172.10.28.15,2012-02-03 16:15:00,22,1,1

脚本使用healthtime将数据拆分成表192个表

当我第一次看到这些数字时,我以为我在某个地方犯了错误。仅将 healthtime 写入 192 次而不是 150,000,000 次的额外效率,我应该期望文件大小减少多大?

编辑:我一发布这个我就意识到了答案。我删除了大约 40% 的字符串,因此大小减少了 40%。

编辑2让我们计算一下纯文本之间的大小差异:

"261846,172.10.28.15,2012-02-03 16:15:00,22,1,1" 

以及数据库入口:

db(261846,'172.10.28.15',22,1,1)

首先,我们将纯文本表示中的 46 个字符减少到 26 个字符。

剩下的字符是:

"261846,172.10.28.15,22,1,1"

或 26 个字节。如果每个整数都需要以 32 位(4 字节)存储,那么我们有:

12 字节 (ipaddr) + 4 字节 * 4(整数字段)= 28 字节。

所以看起来转换为整数会降低存储效率,而我所有的 yield 都来自于减少每行存储的字符数。

最佳答案

SQLite 没有运行压缩算法,但它将数据存储在二进制文件而不是文本文件中。这意味着可以更有效地存储数据,例如使用 32 位(4 字节)数字来表示 10,000,000 而不是将其存储为 8 字节的文本(如果文件是 unicode 则更多)。

这里有更多关于 SQL Database File Format 的详细信息如果你有兴趣。

这有意义吗?

关于python - sqlite3 是否压缩数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10824347/

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