1

我正在重新设计一个数据库,我对今天使用的一种我想替换的方法感到非常不舒服。

在不同时间从没有定义格式的 *.csv 文件加载大量数据。数量与不同的客户有关

所以方法是为每个新客户创建一个表并保持它不断加载。问题是不断为每个客户创建新表,并且它们不匹配并且难以管理和查询。

我已经考虑过创建一个表,其中包含所有数据和一些列来控制它们来自哪个客户/表,但我仍然认为这可能会创建一个太大的表,因为它更难管理或变慢尺寸。

关于加载非常规格式的文件,我是否可能缺少其他任何方法?非常规,我的意思是每个文件可以有不同的列(数量和格式)。

4

1 回答 1

2

这是一个应用程序,我将使用数据库来管理 *.csv 文件,但我不会将 *.csv 文件放入数据库中。我用照片数据库做了类似的事情。

基本上,我会用一张表来管理 *.csv 文件。

CSV Files
---------
File ID
Customer ID
Template location on disk
CSV file location on disk

文件 ID 是一个自动递增的整数。客户 ID 是一个指向客户表的整数。

磁盘上的模板位置是一个指向磁盘上模板位置的字符串。该模板是一个平面文件,按列顺序列出相应 CSV 文件中的列。模板文件的格式取决于您,尽管您的 CSV 引擎必须处理它。此模板是为没有列标题的 CSV 文件手动创建的,并且可以通过编程方式为具有列标题的 CSV 文件创建。

磁盘上的 CSV 文件位置是指向磁盘上 CSV 文件位置的字符串。

您可以在此表上有其他重要列,例如 CSV 文件收到的时间戳。我已将这些字段关闭以使解释更简单。

对于您要查询的每个 CSV 文件,您将从数据库中读取 CSV 文件行。然后您的 CSV 引擎将:

  • 阅读模板
  • 处理 CSV 文件
  • 返回所需的结果,如果此模板不包含所需的列,则返回 null。

数据库将维护磁盘上模板和 *.csv 文件的索引。CSV 引擎将处理模板和 *.csv 文件,返回所需的信息。

于 2012-09-28T17:59:22.263 回答