none
SQL 数据对比更新 RRS feed

  • 问题

  • 我有两台数据库,表的结构完全相同,但是由于特殊性,两台数据库的表数据没有设置同步,也不想通过备份恢复的方式保证两台服务器的数据统一性,想尝试通过SQL语句来将两台数据库表对比,然后更新。希望将执行命令可以将A数据库下的表和B数据库下的表数据保持一致就行。

    通过except可以将A数据库下的表和B数据库下的表数据查找差异项或者相同项,最终想希望执行命令后,t1和t2的数据相同(将差异数据更新到t2中),最终以T1为准。

    在两张表结构完全相同的情况下,如果有命令可以直接将数据库下的所有表进行数据更新到指定的表中,希望可以提供下命令,谢谢

    select * from DB1.dbo. t1
    except
    select * from DB1.dbo. t2
    intersect
    select * from DB1.dbo. t2

    2018年12月19日 7:03

答案

  • Hi 小龙技术问答,

    如果只想用SQL语句来进行这个操作,可以试试这个:

    delete from dbo.Table_2
    where not exists
    (
    select 1 from dbo.Table_1 where dbo.Table_1.column1 = dbo.Table_2.column1 and dbo.Table_1.column2 = dbo.Table_2.column2)
    insert into dbo.Table_2
    select * from dbo.Table_1
    except
    select * from dbo.Table_2

    Best Regards,

    Teige


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年12月20日 2:46
    版主

全部回复

  • SQL Server 提供有一个命令行工具:tablediff
    • 已建议为答案 ericzhou 2018年12月19日 10:36
    2018年12月19日 9:08
  • Hi 小龙技术问答,

    如果只想用SQL语句来进行这个操作,可以试试这个:

    delete from dbo.Table_2
    where not exists
    (
    select 1 from dbo.Table_1 where dbo.Table_1.column1 = dbo.Table_2.column1 and dbo.Table_1.column2 = dbo.Table_2.column2)
    insert into dbo.Table_2
    select * from dbo.Table_1
    except
    select * from dbo.Table_2

    Best Regards,

    Teige


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年12月20日 2:46
    版主