小编典典

与导入的数据一起存储补充数据的策略

sql

我已经遇到过几次这个问题,我想知道其他人在做什么。

当我创建数据库时,有时我必须每天定期将数据导入表中。我通常要做的是删除所有记录,然后从外部数据源重新导入每条记录。

很多时候,我将不得不存储更多与导入记录相关的数据,但这些数据并非来自原始导入源。通常,此“额外数据”来自用户输入。因此,我将创建另一个表,该表的主键与获取导入数据的表的键相匹配,并将此附加数据存储在新表中。如果这没有意义,请参见以下示例:

在旧的旧系统中,我们存储员工数据。但是,我需要在无法连接到旧系统的Web应用程序中使用这些数据。因此,我创建了一个数据库,该数据库的表与我在旧系统中拥有的数据的模式匹配,并且每天将每条记录导入该表中。导入时,我会删除每条记录并导入每条记录。

但是在我的新系统中,员工可以保存简历。因此,在另一个表中,我存储了此数据及其ID。

仅具有一个表会更简单,但是我不能这样做,因为在导入时,我会删除其他地方不存在的数据。

另一个不好的事情是,因为我将删除所有这些记录以进行导入,所以无法使用相关数据定义外键约束。

我讨厌这样设计数据库,因为我知道有更好的方法。如果我可以在导入数据时进行更新,而不是全部删除并导入,那不是很好吗?

我使用的是Sql Server 2008,但感兴趣的是可以与任何RDBMS配合使用的策略。


阅读 167

收藏
2021-04-07

共1个答案

小编典典

好吧,当您执行导入时,导入到临时表中,然后更新生产表中的记录(按单词的一般含义进行更新:删除已删除的内容,添加新的内容,修改已更改的内容)。

您可能还想MERGE在2008年签出新的SQL命令,事实证明它对这种情况非常有帮助。

2021-04-07