如何对比两个表字段差异

做这个项目,以前只在业务表增加字段,而没在其历史表增加对应字段

最近客户需要将业务表和历史表的字段保持一致。于是用这个语句来进行对比即可,如果查出来有数据,则表示有字段差异

--2个表比较
DECLARE @SourceTableName        VARCHAR(100)
DECLARE @DestTableName          VARCHAR(100)
 
SET @SourceTableName = ‘表名1‘
SET @DestTableName = ‘表名2‘
SELECT A.TABLE_NAME AS SourceTable
      ,A.COLUMN_NAME AS SourceColumn
      ,A.DATA_TYPE AS SourceType
      ,B.TABLE_NAME AS DestTable
      ,B.COLUMN_NAME AS DestColumn
      ,B.DATA_TYPE AS DestType
FROM (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @SourceTableName) A
FULL OUTER JOIN (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @DestTableName) B
     ON A.COLUMN_NAME = B.COLUMN_NAME AND A.DATA_TYPE = B.DATA_TYPE
WHERE A.TABLE_NAME IS NULL OR B.TABLE_NAME IS NULL

时间: 2024-10-06 15:21:05

如何对比两个表字段差异的相关文章

linux对比两个文件的差异

在项目维护阶段,经常会对垃圾文件进行清理.比如没有在数据库中的文件进行删除,这个时候最好的选择就是使用shell命令了:废话不多说直接上代码: 1.首先准备好从数据表导出来的数据,方法随意 2.在服务器查看指定目录下所有文件的文件名,并生成文件. ls *.* >***.txt 3.对比两个文件的文件内容不同的部分,并且删除 #!/bin/sh #BEGIN cat test1.txt | sort | uniq | sort > a_u.txt cat test2.txt | sort |

MyBatis两张表字段名相同产生的问题

结论: 通过设置别名的方式让其产生区别 <select id="queryBySekillId" resultMap="successKilled"> select sk.seckill_id "seckill_id", sk.user_phone "user_phone", sk.state "state", sk.create_time "create_time", s.

对比两个同类型的泛型集合并返回差异泛型集合 ——两个List&lt;类名&gt;的比较

1: /// <summary> 2: /// 对比两个同类型的泛型集合并返回差异泛型集合 3: /// </summary> 4: /// <typeparam name="T">泛型类型</typeparam> 5: /// <param name="newModel">修改后的数据集合</param> 6: /// <param name="oldModel"&g

对比两个实体类属性值的差异

/// <summary> /// 对比两个实体类属性值的差异 /// </summary> /// <typeparam name="T">实体类</typeparam> /// <param name="oldMod">原实体类</param> /// <param name="newMod">新实体类</param> /// <return

maximo数据库配置中,应用配置变更时出错、中断或删除某表字段后出现问题

如果数据库配置期间出错或者配置过程被中断,以及删除某表的某字段之后也许系统会出问题, 包括数据库配置界面无法查询(这个可以先打开管理方式,然后放弃应用配置变更,可以恢复,但数据库配置应该是未完整的) 以及添加某字段时提示表已存在这个字段,但属性界面里并没有这个字段,同时数据库中相应的表存在这个字段, 上述现象可能都是数据库应用配置变更期间系统未完整完成配置 解决方法:除了查看当前表的表字段之外,还应查看maxattribute,maxattributecfg这两个表,将未完成的配置添加进去,可参

MySQL生产库中添加修改表字段引起主从崩溃的问题总结

上周末和开发人员对线上库中的部分表的在线DDL和update,这过程中出现了一些意料之外的问题,现将过程.分析和解决方案在这里总结一下 一. 需求背景: 要在如下表中添加字段(modified_at)并且更改默认值 table_name { baby_compbaby_comp_statusbaby_usrbaby_ad_userbaby_campbaby_ordbaby_acc_eva } 每张表执行如下操作ALTER TABLE `$table_name` ADD COLUMN `modif

diff 比较两个文件的差异

功能:比较两个文件的差异,并把不同地方的信息显示出来.默认diff格式的信息. diff比较两个文件或文件集合的差异,并记录下来,生成一个diff文件,这也是我们常说的补丁文件.也使用patch命令对相应的文件打补丁.differential [?d?f??ren??l] 语法:diff    [options]   FILESFILES的格式: FILE1 FILE2 :源是一个文件,目标也是文件.这两个文件必须是文本文件.以逐行的方式,比较文本文件的异同处.DIR1 DIR2   :源是一个

在不清楚数据表字段数据分布的情况下,应该创建什么类型的索引?

在讨论之前,先看看关系型数据库常见的索引类型: 1.位图索引,适用于该字段重复数据很多的情况: 2.B+树索引,适用于该字段重复数据不多的情况. 在不清楚数据表字段数据分布的情况下,应该创建什么类型的索引?个人觉得以上两种都不太适用,可以尝试使用第3类的索引: 3.倒排索引,在搜索引擎使用较多,适用于大多数的情况. 使用普通的文本文件格式存储倒排索引,格式为: value:rowid(行标识码),字段值对应value,rowid对应该行的标识码. 要注意的是,在创建倒排索引时,倒排索引的key需

MySQL建表字段类型

1.数据库:在MySQL中,要存储数据,必须从数据库开始,因此首先要创建数据库,但由于学校的MySQL服务器对学生数据帐号有限止,学生不得创建数据库,故每个学生的帐号中已事先由信息中心为大家建立了一个名为帐号名的数据库.但我们必须了解创建数据库的语句为CREATE DATABASE <数据库名>2.数据表:是构成数据库的一个基本单位,在一个数据库中用户可以建立多张数据表.这是我们有权力建立的.3.数据表结构:创建一个数据表的第一步即为创建数据表结构,在数据表结构中的内容包括:有几个字段,每个字