我手头的任务是为数据库创建某种逻辑。今天有一个 IBM MQ 系列设置,可以从几个远程系统复制数据。目前它在远程系统中发生变化并将数据转储到 SQL Server 2005 数据库中的临时表中。
我想根据一些简单的验证逻辑(必填字段和数据格式)和数据层次结构的一些更高级的检查来验证数据。正在导入的数据是分层的,其中一些数据之间存在父子关系。分层验证应检查暂存表和生产表中当前可用的数据,以确保在导入完成后存在有效的层次结构。
如果记录验证失败,应该以某种方式记录失败并且不应该导入失败的记录,但应该导入剩余的记录。如果当前生产表中的记录具有相同的 id,则应将其替换为新记录。在数据出现在临时表中之后,应尽快从临时表传输数据。
据我所知,生产表中的记录总数不会超过100万条,每批更新项目的可能数量最多为几千行。
我的问题是什么解决方案最适合导入数据?
我想到了几个可能的解决方案:
开始转移的方式:
- 定期轮询临时表并在插入新数据时启动某种传输过程的 Windows 服务。
- 将新数据插入表中时,使 MQ 启动传输过程
- 安排 SSIS 作业定期运行
验证和传输数据的方法:
- 创建 SSIS 作业
- 创建存储过程
- 自定义 .NET 代码
我主要担心的是,生产表中的层次结构必须始终保持不变,并且数据应该在出现在暂存表中后不久就可以在生产表中使用。我不能确定临时表中是否始终有完整的层次结构可用。