Database design 将没有模式的文件加载到数据库

Database design 将没有模式的文件加载到数据库,database-design,file-upload,batch-file,Database Design,File Upload,Batch File,我正在重新设计一个数据库,对于今天使用的其中一种我想替换的方法,我感到非常不舒服 从不同时间没有定义格式的*.csv文件加载大量数据。数量与不同的客户相关 因此,方法是为每个新客户创建一个表,并不断地加载它。问题是,不断地为每个客户创建新表,这些表不匹配,难以管理和查询 我已经考虑过创建一个包含所有数据和一些列的表,以控制它们来自哪个客户/表,但我仍然认为这可能会创建一个太大的表,因为它的大小而更难管理或速度较慢 在加载非常规格式的文件时,我是否还缺少其他方法?“非常规”是指每个文件可以有不同的

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

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

因此,方法是为每个新客户创建一个表,并不断地加载它。问题是,不断地为每个客户创建新表,这些表不匹配,难以管理和查询

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


在加载非常规格式的文件时,我是否还缺少其他方法?“非常规”是指每个文件可以有不同的列(数量和格式)。

这是一个应用程序,我将使用数据库管理*.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文件,返回所需信息。

明白了,这是解决问题的一种非常有趣的方法,注意到!谢谢,我不再做这个项目了,但今天我意识到无模式数据库几乎可以无缝地解决这个问题。