SuperAPI AI 工具集

sql-server-table-reconciliation

数据与分析

查看项目

更新于 10-15 21:52

技能介绍

用途:跨两个 SQL Server 实例比较同名表,用于数据迁移验证、ETL 校验、行不一致检测与模式漂移排查。

主要能力:使用 Python 配合 mssql-python 驱动与 Apache Arrow 提取数据,检测缺失行、多余行、列值不匹配与模式差异,并输出对账报告。支持 SQL 认证或 Entra(Azure AD)认证。

使用方式:运行捆绑脚本,例如:python scripts/reconcile.py --source-server <source_server> --source-database <source_database> --target-server <target_server> --target-database <target_database> --tables "<table_spec>" --auth <sql|entra> --chunk-size <chunk_size> --output <console|csv|json>。可选参数 --primary-key 指定主键,省略则自动检测;--columns 指定比较列,省略则比较全部非主键列。表名支持逗号分隔或通配符,如 dbo.Orders,dbo.Items 或 dbo.*。运行前安装依赖:pip install mssql-python pyarrow pandas。

比较规则:比较前归一化类型(小数统一精度、字符串去空格、日期时间转 UTC);NULL 与 NULL 视为匹配;始终按主键连接比较,忽略行顺序;大表按块提取。超过 100 万行时建议先用 HASHBYTES 生成行哈希做预检,仅拉取哈希不匹配的行。

限制:必须使用 mssql-python 驱动,不可用 pyodbc 或 pymssql;必须通过 cursor.arrow() 使用 Apache Arrow 提取;连接必须使用连接字符串格式,不能用关键字参数;必须先确定主键,自动检测失败需询问用户;不得在脚本中硬编码凭据,应使用环境变量(MSSQL_USER、MSSQL_PASSWORD);不得在输出或日志中打印凭据;元数据查询须使用参数化查询。报告格式、各表通过/失败汇总等细节以实际脚本输出为准。