在SQL批量上载期间删除旧记录

在SQL批量上载期间删除旧记录,sql,database,Sql,Database,我正在寻找在批量数据上传期间管理数据库表中数据的最佳实践和想法。我认为从一个例子开始是最简单的: 假设所讨论的数据库表包含以下记录: id | name | ... 1 | company A | 2 | company B | 3 | company C | 然后,我选择使用一个新的数据文件批量更新此表,该文件仅包含a公司和C公司的信息,并理解B公司不再是所需的数据点 所以我的问题是:我正在使用upsert技术来管理数据文件中列出的数据点,但是如何有效地从数据库中删除未呈现的

我正在寻找在批量数据上传期间管理数据库表中数据的最佳实践和想法。我认为从一个例子开始是最简单的:

假设所讨论的数据库表包含以下记录:

id | name      | ...
 1 | company A |
 2 | company B |
 3 | company C |
然后,我选择使用一个新的数据文件批量更新此表,该文件仅包含a公司和C公司的信息,并理解B公司不再是所需的数据点


所以我的问题是:我正在使用
upsert
技术来管理数据文件中列出的数据点,但是如何有效地从数据库中删除未呈现的数据点(例如,公司B)?我是否应该监视时间戳并清除比上载开始时间早的结果?或者我应该转储整个表并重新填充它(以管理索引为代价)?后者的缺点是使表在上传过程中变得无用,但前者存在并发性和锁定问题。想法?

我将数据放入工作表,然后使用sql代码只插入或更新我想要的记录,而不是批量插入生产表

对不起,误会了,你想知道如何摆脱不再有用的记录吗?
再次大容量插入到工作表,然后连接到该表以确定哪些记录不再需要,并使用delte语句将其删除。

一旦数据上传到“工作”区域,您就有了很多选择--包括在修改“主”之前完成大量工作我甚至从未考虑过将新数据暂存到临时表中。这将很有效。谢谢我从未在不先暂存数据的情况下导入数据。在我有机会清理之前,没有任何东西进入我的prod表。