我每天都会收到新的数据文件。现在,我正在构建包含所有必需表的数据库,以导入数据并执行所需的计算。
我应该将每一天的新数据附加到当前的表格中吗?每个文件都包含一个日期列,如果我需要分析某一天的数据,将来可以进行“WHERE”查询。或者我应该每天创建一组新的表格吗?
我是数据库设计的新手(来自Excel)。我将使用SQL Server。
答案 0 :(得分:2)
您可能需要考虑查看SSIS(SqlServer Integration Services)。它是用于执行ETL活动的SqlServer工具。
答案 1 :(得分:2)
假设接收的数据结构相同,您应该只需要一组表而不是每天创建新表。
我建议将传入数据中的日期列的值存储在数据库中,并在表中包含“CreateDate”列,默认值为“GetDate()”,以便自动填充插入行时的当前日期。
您可能还希望有另一列来存储从中导入行的数据文件名,但是如果您已经存储了日期列的值和插入行的日期,那么这不应该是必要的。
过去,在使用自定义数据加载器应用程序执行此类活动时,我还发现创建日志文件以记录成功/错误/警告消息很有用,包括源数据的某些类型的唯一键和目标数据库 - 即。如果来自Excel文件并进入数据库列,则可以存储Excel中的行索引和插入行的主键。这有助于以后跟踪任何问题。
答案 2 :(得分:1)
是的,将每天的数据附加到表格中;所有数据的一组表格。
是的,使用日期列来标识数据加载的日期。
可能有另一个带有日期列和clob列的表。包含加载日期的日期和包含您导入的文件的clob。
答案 3 :(得分:1)
好问题。你绝对应该有一组表并每天附加数据。考虑一下:如果您每天创建一组新表,那么月报表查询会是什么样的?季度报告查询?这将是一团糟,到处都是UNIONs
和JOINs
。
一组带有WHERE子句的表使查询和报告易于管理。
您可能会对关系数据库理论进行一些阅读。 Wikipedia是一个很好的起点。如果你有诀窍,那么基础知识非常简单。
答案 4 :(得分:0)
我将数据加载到阶段表中,然后附加到主表。每周一次,我会刷新主表中的所有数据,以确保数据按照源保持正确。
马库斯