【问题标题】:Efficient export of Android SQLite database to CSV将 Android SQLite 数据库高效导出为 CSV
【发布时间】:2014-10-07 05:55:55
【问题描述】:

我有一个按以下格式存储用户收集的无序数据的数据库:

uID     format     value
ash001  height     37
ash001  disease    green
ash002  disease    red
ash003  disease    orange
ash003  height     39

导出时,用户更喜欢以下数据格式:

uID     height    disease
ash001  37        green
ash002            red
ash003  39        orange

将值从数据库格式导出到 CSV 文件相对简单,不会导致任何问题。当我尝试导出用户首选格式时,我很快遇到了性能问题。我目前用于组织和导出的方法是获取不同“格式”和“uID”的列表,然后执行单个查询以获取每个“值”来填充表格。这会导致许多查询(通常是空值)和非常缓慢的性能。我观察到的最大 uID 和格式是 9000x20。

我有兴趣找到一种可以加快导出过程的更好方法。

【问题讨论】:

  • 我认为最简单的解决方案是将数据复制到您要导出的格式的新临时表中,然后将其导出。或者只是以您想要导出的格式存储数据。
  • 您的数据库设计不佳。您应该采用客户建议的格式。
  • Frank,问题是客户可以随时在应用程序中重新定义其他格式,这需要在每次添加或删除额外格式时重新设计数据表。

标签: android database algorithm sqlite


【解决方案1】:

关于 Stack Overflow 的其他问题让我发现这个模型被称为入口属性值 (EAV) 模型,并且非常不适合用于数据存储。不幸的是,我们收集的数据和其他元数据的格式要求我们使用这种格式。要将其转换为真正的关系格式,我使用了此答案中提供的多连接查询:What is best performance for Retrieving MySQL EAV results as Relational Table

【讨论】:

    猜你喜欢
    • 2015-09-30
    • 2016-01-21
    • 2018-08-26
    • 2012-05-04
    • 2013-05-13
    • 2016-01-18
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    相关资源
    最近更新 更多