将每日数据添加到数据库的推荐方法

时间:2012-02-07 15:10:04

标签: sql-server database database-design

我每天都会收到新的数据文件。现在,我正在构建包含所有必需表的数据库,以导入数据并执行所需的计算。

我应该将每一天的新数据附加到当前的表格中吗?每个文件都包含一个日期列,如果我需要分析某一天的数据,将来可以进行“WHERE”查询。或者我应该每天创建一组新的表格吗?

我是数据库设计的新手(来自Excel)。我将使用SQL Server。

5 个答案:

答案 0 :(得分:2)

您可能需要考虑查看SSIS(SqlServer Integration Services)。它是用于执行ETL活动的SqlServer工具。

答案 1 :(得分:2)

假设接收的数据结构相同,您应该只需要一组表而不是每天创建新表。

我建议将传入数据中的日期列的值存储在数据库中,并在表中包含“CreateDate”列,默认值为“GetDate()”,以便自动填充插入行时的当前日期。

您可能还希望有另一列来存储从中导入行的数据文件名,但是如果您已经存储了日期列的值和插入行的日期,那么这不应该是必要的。

过去,在使用自定义数据加载器应用程序执行此类活动时,我还发现创建日志文件以记录成功/错误/警告消息很有用,包括源数据的某些类型的唯一键和目标数据库 - 即。如果来自Excel文件并进入数据库列,则可以存储Excel中的行索引和插入行的主键。这有助于以后跟踪任何问题。

答案 2 :(得分:1)

  1. 是的,将每天的数据附加到表格中;所有数据的一组表格。

  2. 是的,使用日期列来标识数据加载的日期。

  3. 可能有另一个带有日期列和clob列的表。包含加载日期的日期和包含您导入的文件的clob。

答案 3 :(得分:1)

好问题。你绝对应该有一组表并每天附加数据。考虑一下:如果您每天创建一组新表,那么月报表查询会是什么样的?季度报告查询?这将是一团糟,到处都是UNIONsJOINs

一组带有WHERE子句的表使查询和报告易于管理。

您可能会对关系数据库理论进行一些阅读。 Wikipedia是一个很好的起点。如果你有诀窍,那么基础知识非常简单。

答案 4 :(得分:0)

我将数据加载到阶段表中,然后附加到主表。每周一次,我会刷新主表中的所有数据,以确保数据按照源保持正确。

马库斯