Ton*_*ony 11 sql-server-2008 tools sql-server
我们正在将我们的数据库迁移到新模式,但想要验证数据是否已正确移动。
如果模式相同,传统的数据比较工具可以比较两个数据库的差异。在我们的例子中,表设计发生了变化,但旧模式中的所有数据都在新模式中,只是稍微移动了一下,我需要确保它是正确的。我们有数千万行,因此手动检查不是一种选择。
是否有任何工具可以帮助进行此类比较?
如果没有,是否有任何库/框架可以帮助启动自定义解决方案的开发?
如有必要,我很乐意使用特定于数据库的解决方案,在这种情况下用于 SQL Server 2008。
我的解决方案:我通过VIEW在旧数据库上创建一个与新数据库表具有相同字段的每个表来比较两个数据集。
然后,我使用此处描述的技术比较数据:在 SQL Server 中比较两个表的最短、最快和最简单的方法:UNION!
我在这次迁移中很幸运,因为整体表结构类似于旧数据库,字段从一个表移动到另一个表,删除或添加。在删除和添加的情况下,没有什么可比较的,对于已移动或聚合的字段,我会在视图中进行计算以提供正确的信息进行比较。
该UNION比较显示我只能用不同的行,所以只要数据是正确的,我得到一个空的结果集。
比较两种不同的模式并非不可能,而是计算您对结果的信心程度。我基本上借鉴了银行对账技术
重要提示:这种协调不是为了确保目标与其数据上下文中的源完全匹配(您迁移到新系统是有原因的),但您确实需要解释任何差异!
我通常将比较分为几种方法(特别是详细指标):
无论我使用什么方法来生成将要比较的内容,我最终都会得到一组文件/视图/数据库,其中包含可协调的源和目标数据,然后根据介质,我可以使用一种常用工具来比较它们。我个人的喜好是:
文件比较
为 SourceDB 和 DestinationDB 创建两个不同的文件夹(标记时间/版本,以便我知道我何时进行协调)并将我的指标输出转储为相关命名的文件,然后使用比较工具(例如CSDiff)来识别差异
Excel 比较
特别是在处理管理报告时,我将创建一组 Excel 工作簿来比较报告(实质上是利用 VLookups 和比较总数)
数据比较
与其将调节数据输出到文件或报告,不如将它们输出到单独的 DB,然后使用Redgate SQL Data Compare 之类的东西来比较 DB
没有尝试过任何这些,但在“数据协调工具”上的快速谷歌搜索给出:
还有其他的,但那些看起来很合理
如果要比较两种不同数据库设计中的数据,则必须编写手工编码的 SQL 来比较数据。
没有用于检查两个不同数据库中数据是否相同的框架库。
只有你知道你改变或修改了什么
您将无法比较不同的模式。为了解决您的问题,我会弄清楚您需要比较哪些数据。然后我会在每台服务器上创建一个视图,该视图将拉回我想要比较的数据(考虑数据类型等)。
一旦两个视图相同,我将使用第三方工具(如Red Gate Data Compare)来查看哪些行不同。
听起来很痛苦。祝你好运!
| 归档时间: |
|
| 查看次数: |
8368 次 |
| 最近记录: |