【发布时间】:2013-05-09 05:22:59
【问题描述】:
我需要将 200'000 条记录从一个数据库 (oracle) 迁移到另一个 (SQL Server)。我将使用 SSIS(SQL Server 集成服务)管理迁移,并且我已经创建了包。
记录引用数据库中的文档(带有 HBLOB 字段)。它们需要相当长的时间来迁移,因此我在 SSIS 中引入了变量,以便每次只迁移一部分记录,方法是使用将变量作为边界的查询。这样我就可以在上线日期之前开始移动一些历史记录。
一开始我想按 ID 移动,例如以 1'000 的第一个块,然后是第二个块,依此类推。但这是不可能的,因为某些文档(在生产系统中)仍然可以更改,因此它们还不能移动。
这里是约束:
If "Status" is closed -> the document can be safely taken
(other statuses are draft, pending).
If "CreatedDate" < 2010 -> the document can be moved without taking care of status.
- 首先,我可以移动所有“旧”文档(在 2010 年之前创建)。
- 我将移动所有处于“关闭”状态的文档。
- 上线那天,我会迁移所有剩余的记录。
但是,使用这种模式,跟踪移动的文档(在点 [2] 处)并不容易,因为在此期间其他文档可能会进入关闭状态。
谁能建议一个更好的程序来移动这些记录,而不会有重复或丢失任何数据的风险?
【问题讨论】:
-
2010年之前可以创建一个封闭的文档,不是吗?所以你不能确定你是否移动了同一个文档两次。我错了吗?
-
您是否跟踪每个文档的关闭/完成日期?
-
@Francesco:我会先移动 2010 年之前创建的所有文档,然后再移动已关闭的文档,但其日期在 2010 年阈值之后。这样,我将避免“旧”重复。
-
@Dan:每个文档都有一个状态,createDate,LastUpdateDate。也许我可以使用 LastUpdateDate 字段来设置阈值。像:“获取所有状态为已关闭且 LastUpdateDate
-
是否会在上线日期之前使用新数据库(迁移除外)?
标签: data-migration