• 技术文章 >数据库 >mysql教程

    根据表的主键字段和数据字段从其它数据库同步相同表的数据

    2016-06-07 14:57:27原创718

    根据一个表的中主键字段和数据字段从其它数据库中找到结构相同的同名表,并同步相同表的数据。 无 USE [CMS2]GODECLARE @sql NVARCHAR(MAX) SET @sql=N'MERGE [dbo].[RolePermission] targetUSING [CMS].[dbo].[RolePermission] sourceON target.['+STUFF((SE

    根据一个表的中主键字段和数据字段从其它数据库中找到结构相同的同名表,并同步相同表的数据。 <无>
    USE [CMS2]
    GO
    DECLARE @sql NVARCHAR(MAX)
      SET @sql=N'MERGE [dbo].[RolePermission] target
    			USING [CMS].[dbo].[RolePermission] source
    			ON target.['+STUFF(
    			(SELECT N'] AND target.[' + [COLUMN_NAME] + N']=source.[' + [COLUMN_NAME] FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE SUBSTRING([CONSTRAINT_NAME],1,2)='PK' AND [TABLE_NAME] = 'RolePermission' FOR XML PATH('')),1,14,N'')+'] 
    			WHEN MATCHED
    			THEN UPDATE SET target.['+STUFF(
    			(SELECT N'],target.[' + [COLUMN_NAME] + N']=source.[' + [COLUMN_NAME] FROM INFORMATION_SCHEMA.COLUMNS WHERE [TABLE_NAME] = 'RolePermission' FOR XML PATH('')),1,10,N'')+']
    			WHEN NOT MATCHED
    			THEN INSERT VALUES(['+STUFF(
    			(SELECT N'],[' + [COLUMN_NAME] FROM INFORMATION_SCHEMA.COLUMNS WHERE [TABLE_NAME] = 'RolePermission' FOR XML PATH('')),1,3,N'')+N'])   
    			WHEN NOT MATCHED BY SOURCE THEN   
    			DELETE;'
    EXEC sp_executesql @sql

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:sqlite入门练习,通讯录增删改查 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • hive和mysql的区别有哪些• mysql数据库的超级管理员名称是什么• mysql怎么连接数据库• count(*)为什么很慢?原因分析• 聊聊怎么用MySQL快速实现一个推荐算法
    1/1

    PHP中文网