我有一个7.4GB的csv文件。在将其转换为具有python script的sqlite数据库后,输出DB为4.7Gb,大约为原始大小的60%。sqlite3压缩数据吗?
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表
当我第一次看到这些数字,我认为我在某个地方犯了一个错误。对于只增加健康时间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字节。
所以它看起来像转换为整数使得存储稍微低效,我的所有收益来形成减少存储在每一行中的字符数。
很明显,sqlite是一种二进制格式,而csv是文本。 60%的尺寸差异可能是由此造成的。 –
对不起,什么是健康状况?一个快速的谷歌搜索没有变成什么。 –
健康时间只是该领域的名称。 – Maus