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 平面文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将手机中的csv文件的内容导入到SQLite数据库中

使用 Python 将 CSV 文件导入 sqlite3 数据库表

SQLite - 每天将 .csv 数据导入数据库

如何将加载 .sql 或 .csv 文件导入 SQLite?

Qt操作Sqlite类封装,及命令行导入csv文件到Sqlite数据库

SQLite新建数据库及txt文件(CSV文件)导入