4

CSV 数据库与 Android 中的 SQLite 数据库相比如何?

查看 StackOverflow 上的其他问题并阅读 Android 开发者文档,我发现 SQLite 数据库的使用频率远高于从 CSV 文件中读取数据的频率。还有一些用户想要将 CSV 文件导入 SQLite 数据库的问题(例如,this questionthis one)。使用 SQLite 而不是 CSV 有优势吗?

我尝试过使用 CSV 和 SQLite,在性能方面我没有看到很大的差异,但如果我在这里错了,请纠正我。
据我所知,读取 CSV 文件有不同的方法,我使用以下方法打开并读取它BufferedReader

BufferedReader reader = 
        new BufferedReader(new InputStreamReader(context.getAssets().open(fileName)));

并且 SQLite 数据库以通常的方式打开:

SQLiteDatabase db = helper.getReadableDatabase();

我不太确定功能上的差异,尽管我假设 SQLite 更容易管理和过滤,这就是我问这个问题的原因。

所以总结一下:

  • 两者中的任何一个在性能方面更快吗?
  • SQLite(或 CSV)是否有其他没有的附加功能,尤其是在 Android 中(我知道 Android 有自己的SQLiteDatabase
  • 为什么 SQLite 的使用似乎远远超过 CSV 数据库(即读取和过滤 CSV 文件)?

编辑:

澄清一下,我知道 CSV 文件只是一个用逗号分隔值的文件,即不像 SQL 数据库那样是“数据库”。但是,我仍然可以将 CSV 文件用作一种数据库,其中逗号分隔的值表示不同的列,也可以通过检查特定列是否与特定值匹配来过滤这些列。所以我问哪个更好地读取数据。

4

1 回答 1

3

SQLite and CSV are not really the same thing, which makes the comparison rather difficult. SQLite is a (limited) SQL database, which means that you can use it to store structured and related data in a way that ensures consistency (related records not messing up when either is deleted) and simple way.

Even for flat data, SQLite makes it easier to query a subset of your data (say, all records where one of the columns is less than three), reorder the data depending on your needs and insert a record somewhere in the middle.

CSV on the other hand, is just a text file, that you can use for very simple data. It has little overhead, but it won't help you very much in the sense of data integrity and easy querying. If you don't need this, and always read all of it, sure, you can use CSV.

If none of this rings any bells to you (related records, and data integrity and such) I suggest reading up on relational database systems. As always, Wikipedia is an excellent source.

于 2015-09-13T17:42:51.007 回答