判断两个数据库中不一样的表和存储过程

---两表结构不一样
SELECT a.a1,a.a2,a.a3,a.length from
(SELECT a.a1,a.a2,a.a3,a.length, b.a1 AS b1,b.a2 AS b2,b.a3 AS b3,b.length AS b4  from
(select o.name AS a1, c.name AS a2,t.name AS a3,c.length from dbf.sys.syscolumns c
inner join dbf.sys.systypes t on c.xtype= t.xtype
inner join dbf.sys.sysobjects o on c.id= o.id
where   o.xtype=‘u‘
)AS a
LEFT JOIN
(select o.name AS a1, c.name AS a2,t.name AS a3,c.length from hisdb.sys.syscolumns c
inner join hisdb.sys.systypes t on c.xtype= t.xtype
inner join hisdb.sys.sysobjects o on c.id= o.id
where   o.xtype=‘u‘
)AS b
ON a.a1 = b.a1 AND a.a2 = b.a2
)AS a
WHERE a.b1 IS NULL GROUP by a.a1,a.a2,a.a3,a.length

----两个数据库所缺表
SELECT a.a1 from
(SELECT a.a1,a.a2,a.a3,a.length, b.a1 AS b1,b.a2 AS b2,b.a3 AS b3,b.length AS b4  from
(select o.name AS a1, c.name AS a2,t.name AS a3,c.length from dbf.sys.syscolumns c
inner join dbf.sys.systypes t on c.xtype= t.xtype
inner join dbf.sys.sysobjects o on c.id= o.id
where   o.xtype=‘u‘
)AS a
LEFT JOIN
(select o.name AS a1, c.name AS a2,t.name AS a3,c.length from hisdb.sys.syscolumns c
inner join hisdb.sys.systypes t on c.xtype= t.xtype
inner join hisdb.sys.sysobjects o on c.id= o.id
where   o.xtype=‘u‘
)AS b
ON a.a1 = b.a1
)AS a
WHERE a.b1 IS NULL GROUP BY a.a1

---两个数据库所缺存储过程
SELECT a.name,a.b1 from
(
SELECT a.name,b.name AS b1 from
(SELECT a.name FROM dbf.sys.sysobjects AS a WHERE xtype = ‘P‘)AS a
LEFT join
(SELECT a.name FROM hisdb.sys.sysobjects AS a WHERE xtype = ‘P‘)AS b
ON a.name = b.name
)AS a WHERE a.b1 IS null

时间: 2024-10-07 05:26:27

判断两个数据库中不一样的表和存储过程的相关文章

Java对比两个数据库中的表和字段,写个冷门的东西

Java对比两个数据库中的表和字段,写个冷门的东西 转载的 来源网络 目前所在的项目组距离下个版本上线已经很近了,就面临了一个问题:开发人员在开发库上根据需要增加数据表.数据字段.或者变更了字段类型或者字段长度等等. 由于时间比较紧迫,导致在开发过程中不可能一一把DDL数据库脚本记录下来,在比较大的项目中,比如我所在项目开发的系统大概包含了800张左右的表,字段上10000个的情况下,人工处理明显不可行,所以我们就得通过程序来判断比对,哪些是我们需要新增加的表,哪些是我们需要新增加的字段,哪些是

判断数据在数据库中是否已存在.

今天下午和同事发生因为判断数据是否在数据库中已存在产生分歧.简易代码如下: //观点一,先取出数据库中已存在ID存入内存,再进行判断 //数据太多情况,内存爆炸 DateTable dt = ExcuteSQL('SELECT ID FROM TABLE'); //List为数据集,已经去重 foreach(var item in List){ //观点二,在for循环中根据ID查询是否已存在 //for循环执行数据库?没这么干过 DateTable dt = ExcuteSQL(string.

数据库中的二维表—巧借Excel

一维表和二维表的区别         一维表也常称为流水线表格,它和二维表做出的数据透视表最大的区别在于"行总计".判断数据是一维表格还是二维表格的一个最简单的办法,就是看其列的内容--每一列是否是一个独立的参数.如果每一列都是独立的参数那就是一维表,如果每一列都是同类参数那就是二维表. 二维表的建立     开始在网上一直查找如何在数据库中建立二维表,查了很多资料大多是什么静态和动态的sql语句建立,看了看也不是很清楚但是在查询的时候总是出来Excel如何如何,于是便想是否可以在Ex

Java学习总结(十八)——MySQL数据库(4)MySQL数据库中的视图,函数,存储过程中常见循环

一.MySQL存储过程中常见的循环1.while循环:WHILE.....DO.....END WHILE例1:创建存储过程(求1+2+.......+num的和):创建成功,进行调用:显示结果:2.REPEAT循环: REPEAT.........UNTLL END REPEAT例2:创建存储过程:创建完成,调用存储过程:显示结果:3.LOOP循环:LOOP END LOOP 例3:创建存储过程:创建成功,调用存储过程:显示结果:二.MySQL中的视图1.概念:有结构(有行有列),但没有结果(

获取sqlserver数据库中所有库、表、字段名的方法

1.获取所有数据库名: SELECT Name from Master..SysDatabases ORDER BY Name 2.获取所有表名: SELECT Name from DatabaseName..SysObjects Where XType='U' ORDER BY Name XType='U':表示所有用户表; XType='S':表示所有系统表; 3.获取所有字段名: SELECT Name from SysColumns WHERE id=Object_Id('TableNa

mysql创建某个数据库中的某张表 只读用户

1.创建用户,并授权SELECT查询权限,授权远程访问权限,注意,命令中username/password指用户名密码,请自己指定.若要限制仅指定IP可以使用此用户访问Mysql,将%改为具IP即可,dbname指定限制的数据库,如果是全部则改为*. GRANT SELECT ON dbname.* TO 'username'@'%' IDENTIFIED BY "password"; 2.刷新mysql权限,使用户创建.授权生效. FLUSH PRIVILEGES; privileg

python 判断两个列表中相同和不同的元素

背景: 在做接口自动化时,通常会判断接口返回中的数据信息,与数据库中返回的数据信息是否一致,比如:将接口返回信息的用户姓名存放到一个列表中,将数据库返回的用户姓名存放到另一个列表中,这时需要判断两个列表是否一致,如果不一致,将不同的元素信息分别回写到excel文件中,可以一目了然的看出哪些信息返回的不正确. 下列代码中直接存放列表信息,比较如下: 1 #接口返回值 2 list1 = ['张三', '李四', '王五', '老二'] 3 #数据库返回值 4 list2 = ['张三', '李四'

查看数据库中存在触发器的表

这次在项目中,我们为了做数据库同步,采用了触发器机制,为数据库做迁移时,我们需要获取数据库中那些表使用了触发器,方便制作数据库安装包. 构思: 触发器在MSSQL作为一个对象进行管理,那么我们就可以通过sysobjects表进行查询获取,所以我们就编写了一下触发器获取SQL SELECT object_name(a.parent_obj) as [表] ,a.name as [触发器] ,(case when b.is_disabled=0 then '使用中' else '停用' end) a

sql语句联表更新(从一个数据库中的一张表更新到另一个数据库的另一张表)

一.sql server数据库写法: update a set a.ksgmm=b.ksgmm,a.ksgm=b.ksgm,a.scztm=b.scztm,a.sczt=b.sczt from landsde.sde.jszb a,kyqcldb.dbo.kcl_ksjj b where a.nd=b.nd and a.kqbh=b.kqbh and a.djflbh =b.djflbh 其中landsde.sde.jszb.kyqcldb.dbo.kcl_ksjj是不同数据库下的不同数据表 二