SQLite 数据库大于 CSV 平面文件?
Posted
技术标签:
【中文标题】SQLite 数据库大于 CSV 平面文件?【英文标题】:SQLite database larger than CSV flat file? 【发布时间】:2015-04-04 02:58:54 【问题描述】:我曾预计使用 SQLite 会减少所用数据的总大小,但实际上我看到 CSV 表示比 SQLite 数据库小 4mb。
数据库包含一个包含 400,000 行的表。该表有四列。
CSV 文件大小为 19MB,SQLite 数据库大小为 23MB。如果这个表大 10 倍,我最好解析 CSV 文件而不是 SQLite。
为什么 SQLite 数据库比 CSV 文件大?
【问题讨论】:
【参考方案1】:不应期望 SQLite 数据库文件更小。将数据放入数据库/表的目的是根据所需的业务规则/SQL 连接访问该数据。索引和其他元数据(如表定义)可以轻松解释额外的空间需求。
【讨论】:
感谢莫里森的澄清。 关于在移动应用程序中存储大量数据,您推荐哪种文件格式?我认为 JSON 不是一个好的选择,CSV 是最好的吗? @jskidd3 如果数据模型很简单,CSV 没有问题。一如既往,这取决于数据。如果您可以将数据从 CSV 加载/存储到 CSV,这也将是一个用例问题。也不要忘记存储和传输的压缩。祝你好运。 其实有些数据库的占用空间比csv文件还小。它是使用表格数据压缩算法实现的。看看 TrailDB。【参考方案2】:一个 sqlite db 包含为 header 保留的空间,还包含表模式和额外信息,如 App Id、版本、编码,请参阅下面的链接以获取更多信息:
http://www.sqlite.org/fileformat.html
【讨论】:
【参考方案3】:看The SQLite Database File Format
您将看到开销来自何处。
数据库的目的不仅仅是存储原始数据。您获得了整个关系结构、索引...您可能唯一期望的是压缩数据文件,但它可能会影响性能。
【讨论】:
以上是关于SQLite 数据库大于 CSV 平面文件?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python 将 CSV 文件导入 sqlite3 数据库表
如何将加载 .sql 或 .csv 文件导入 SQLite?