Django-确定模型字段并在运行时基于CSV文件头创建模型

时间:2019-06-17 18:11:54

标签: django postgresql csv

我需要根据上传的CSV文件的结构,确定在运行时确定Django应用程序模型的最佳方法,一旦在Django中创建模型,该文件便将保持不变。

我遇到了几个与在运行时动态创建/更改Django模型有关的问题。人们一致认为这是一种不好的做法,应该事先知道哪些领域。

我正在创建一个站点,用户可以在该站点上载基于时间序列的csv文件,其中的许多列代表传感器通道。然后,用户必须能够选择一个字段以绘制该字段的相应数据。数据将约为10亿行。

从本质上讲,我正在尝试按照以下步骤进行编码,但是信息匮乏,而且我之前从未做过这样的工作:

  1. 用户选择CSV(或DAT)文件。
  2. 然后,该应用仅加载标题行(这些文件> 4GB)。
  3. 标题行由“,”分隔。
  4. 我使用3的结果为每个通道(列)创建一个表,该字段的名称与该特定通道的单个标题条目相同。
  5. 然后我将相应的数据加载到相应的表中,并为我的应用程序保存模型,然后将其再次更改。

我正在考虑的另一个选项是创建具有10个字段的模型,因为我知道永远不会超过10个通道。然后,当用户加载文件时,将我的CSV读到表中,而将这些字段留空。

有人有过类似应用程序的经验吗?

1 个答案:

答案 0 :(得分:0)

那是记录的分配,从来没有那么多记录。为了提高性能,固定领域的想法听起来最好。如果使用PostgreSQL,则可以查看JSON字段,但不知道对这么多行的影响。

对于灵活的模型,您可以使用EAV模式,但这仅适用于我的经验中的小数据集。