免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3869 | 回复: 3
打印 上一主题 下一主题

如何判断两张表的结构是否一致 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-06 16:42 |只看该作者 |倒序浏览
表一结果如下:
create table bms_gdm_DeviceTab
(
        LocalID         numeric(20) not null,
        ID                int not null,
        Name                varchar(64) null,
        UserLabel        varchar(64) null,
        Notes1                varchar(252) null,
        Notes2                varchar(252) null,
        IP                varchar(20) not null,
        MAC                varchar(20) null,
        Type                int not null,
        Version                varchar(252) null,        -- 显示用的版本
        SOID                varchar(252) not null,       
        PollStatus        int  not null,
        NoRecoverAlarmLevel  int null,
        NoAckAlarmLevel      int null,
    VerStatus            int null,               --版本支持情况,0表示是推荐支持版本,1是非推荐支持版本
        Reserve1        varchar(12 null,
        Reserve2        varchar(255) null,
        Reserve3        varchar(12 null,
        Primary Key (LocalID)
)
go

表二的结构:
create table bms_gdm_DeviceTab
(
        LocalID         numeric(20) not null,
        ID                int not null,
        Name                varchar(64) null,
        UserLabel        varchar(64) null,
        Notes1                varchar(252) null,
        Notes2                varchar(252) null,
        IP                varchar(20) not null,
        MAC                varchar(20) null,
        Type                int not null,
        Version                varchar(252) null,        -- 显示用的版本
        AdaptVer        varchar(252) null,  -- 版本使用用的版本
        SPCPatch        varchar(32) null,   -- SPC补丁号
        SOID                varchar(252) not null,       
        PollStatus        int  not null,
        NoRecoverAlarmLevel  int null,
        NoAckAlarmLevel      int null,
    VerStatus            int null,               --版本支持情况,0表示是推荐支持版本,1是非推荐支持版本
        Reserve1        varchar(12 null,
        Reserve2        varchar(255) null,
        Reserve3        varchar(12 null,
        Primary Key (LocalID)
)
go

1. 表二比表一多出两个字段,用SQL语言怎么判断这两个表结构不一致呢?
2. 进一步,怎么判断表二比表一多出了这两个字段呢?

论坛徽章:
0
2 [报告]
发表于 2009-06-06 18:23 |只看该作者
好久没用了

论坛徽章:
0
3 [报告]
发表于 2009-06-06 20:54 |只看该作者
infomation_schema这个库保存所有信息,从columns这个表可以得到表字段信息,查询出来比较就知道了。

下面这个语句查询出列名和列数据类型,比较语句你自己写吧。table_schema是数据库, 假设为test

SELECT column_name,data_type
FROM information_schema.columns
WHERE table_schema ='test' AND table_name ='bms_gdm_DeviceTab'

[ 本帖最后由 angeljyt 于 2009-6-6 20:58 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-06-13 15:30 |只看该作者
select * From ( Select  'INDEX__' as TTYPE, TABLE_SCHEMA,TABLE_NAME,INDEX_NAME,SEQ_IN_INDEX,COLUMN_NAME,
COLLATION ,NULLABLE ,INDEX_TYPE, NON_UNIQUE  From information_schema.statistics where TABLE_SCHEMA='XXXX'  union Select  'TABEL__' a
s TTYPE , TABLE_SCHEMA, TABLE_NAME,ORDINAL_POSITION, COLUMN_NAME,COLUMN_TYPE,COLLATION_NAME,IS_NULLABLE,COLUMN_TYPE,DATA_TYPE  From
information_schema.columns where TABLE_SCHEMA='XXXX'  ) A Order by 1,2,3,4,5


这个可以比较两个数据库的 表是否不同。

比较两个表,原理同 。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP