1. 程式人生 > >MYSQL比較兩個資料庫中表和欄位的差異

MYSQL比較兩個資料庫中表和欄位的差異

-- 比較兩個資料庫中表的差異

-- u表,p儲存過程,v檢視
-- INTFSIMSNEW新庫,INTFSIMS舊庫

SELECT NTABLE = A.NAME, OTABLE = B.NAME
FROM INTFSIMSNEW..SYSOBJECTS A
  LEFT JOIN INTFSIMS..SYSOBJECTS B
    ON A.NAME = B.NAME
WHERE ISNULL(B.NAME, '') = ''
  AND A.XTYPE = 'U'
UNION ALL
SELECT NTABLE = B.NAME, OTABLE = A.NAME
FROM INTFSIMS..SYSOBJECTS A
  LEFT JOIN INTFSIMSNEW..SYSOBJECTS B
    ON A.NAME = B.NAME
WHERE ISNULL(B.NAME, '') = ''
  AND A.XTYPE = 'U'
ORDER BY 1, 2

-- 比較兩個資料庫中每個表字段的差異

SELECT
  表名A = CASE WHEN ISNULL(A.TABLENAME, '') <> '' THEN A.TABLENAME ELSE B.TABLENAME END,
  欄位名A = A.FIELDNAME,
  欄位名B = B.FIELDNAME,
  順序= A.FIELDSNO,
  說明= CASE WHEN A.FIELDTYPE <> B.FIELDTYPE THEN '型別: ' + A.FIELDTYPE + '-->' + B.FIELDTYPE
              WHEN A.FIELDSNO <> B.FIELDSNO THEN '順序: ' + str(A.FIELDSNO) + '-->' + str(B.FIELDSNO)
              WHEN A.LENGTH <> B.LENGTH THEN '長度: ' + str(A.LENGTH) + '-->' + str(B.LENGTH)
              WHEN A.LENSEC <> B.LENSEC THEN '小數位: ' + str(A.LENSEC) + '-->' + str(B.LENSEC)
              WHEN A.ALLOWNULL <> B.ALLOWNULL THEN '允許空值: ' + str(A.ALLOWNULL) + '-->' + str(B.ALLOWNULL)
         END
FROM (SELECT
        TABLENAME = B.NAME,
        FIELDNAME = A.NAME,
        FIELDSNO = A.COLID,
        FIELDTYPE = C.NAME,
        LENGTH = A.LENGTH,
        LENSEC = A.XSCALE,
        ALLOWNULL = A.ISNULLABLE
      FROM INTFSIMSNEW..SYSCOLUMNS A
        LEFT JOIN INTFSIMSNEW..SYSOBJECTS B
          ON A.ID = B.ID
        LEFT JOIN INTFSIMSNEW..SYSTYPES C
          ON A.XUSERTYPE = C.XUSERTYPE
      WHERE B.XTYPE = 'U') A
  FULL JOIN (SELECT
               TABLENAME = B.NAME,
               FIELDNAME = A.NAME,
               FIELDSNO = A.COLID,
               FIELDTYPE = C.NAME,
               LENGTH = A.LENGTH,
               LENSEC = A.XSCALE,
               ALLOWNULL = A.ISNULLABLE
             FROM INTFSIMS..SYSCOLUMNS A
               LEFT JOIN INTFSIMS..SYSOBJECTS B
                 ON A.ID = B.ID
               LEFT JOIN INTFSIMS..SYSTYPES C
                 ON A.XUSERTYPE = C.XUSERTYPE
             WHERE B.XTYPE = 'U') B
    ON A.TABLENAME = B.TABLENAME
      AND A.FIELDNAME = B.FIELDNAME
WHERE ISNULL(A.TABLENAME, '') = ''
  OR ISNULL(B.TABLENAME, '') = ''
  OR A.FIELDTYPE <> B.FIELDTYPE
  OR A.FIELDSNO <> B.FIELDSNO
  OR A.LENGTH <> B.LENGTH
  OR A.LENSEC <> B.LENSEC
  OR A.ALLOWNULL <> B.ALLOWNULL
ORDER by 1, 4


相關推薦

MYSQL比較資料庫中表差異

-- 比較兩個資料庫中表的差異 -- u表,p儲存過程,v檢視 -- INTFSIMSNEW新庫,INTFSIMS舊庫SELECT NTABLE = A.NAME, OTABLE = B.NAME FROM INTFSIMSNEW..SYSOBJECTS A LEF

SQL語句操作資料庫中表的COMMENT值

參考文件不太給力啊,表註釋和欄位註釋的資料不全。 1 建立表的時候寫註釋 create table test1 (     field_name int comment '欄位的註釋' )comment='表的註釋'; 2 修改表的註釋 alter table test1 comment

lintcode55:比較字串AB,確定A中是否包含B中所有的字元。

*樣例 給出 A = “ABCD” B = “ACD”,返回 true 給出 A = “ABCD” B = “AABC”, 返回 false 注意 在 A 中出現的 B 字串裡的字元不需要連續或

比較字串AB,確定A中是否包含B中所有的字元。

如題 樣例 給出 A = "ABCD" B = "ACD",返回 true 給出 A = "ABCD" B = "AABC", 返回 false 注意 在 A 中出現的 B 字串裡的字元不需要連續或者有序。 目前思路是分別掃描兩個字串得到兩個map&l

SQL Server 比較資料庫的表結構差異

IF EXISTS ( SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[p_comparestructure]')

如何比較資料庫表結構的不同

這些天在做基於開源系統二次開發,邊改邊加欄位。線上還運行了之前改好的系統。表結構的設計管理混亂。又沒有好的辦法,網上找的一下也沒有很好的辦法。很多軟體可以生成變更的sql程式碼,但不能直觀檢視便於開發。後來找了個小工具DatabaseCompare還蠻好用,可以比較資料庫表結

組合語言: 試編寫一段程式,要求比較字串 string1 string2 所含字元是否相等,如相 等則顯示“MATCH”, 若不相同則顯示“NO MATCH”。

試編寫一段程式,要求比較兩個字串 string1 和 string2 所含字元是否相等,如相 等則顯示“MATCH”, 若不相同則顯示“NO MATCH”。 2017年5月25日23:

orcale 查找出表中相同的不同的值minus

1.user表 SELECT user_id FROM OA_COMPANY_USER 2.專案表中投入過的人員 SELECT DISTINCT a.USER_ID FROM OA_COMPANY_USER a, OA_PM_PERSON_INPUT b WHERE a.

使用一條sql語句查詢表的某個為某個值時

使用一條sql語句查詢這兩個表的分數相同的人的名字(使用聯合查詢)    create table a( id int(10), score int(3), name varchar(20), )charset utf8; create table

遞迴最終的價格(不同的價格對比,按遞迴邏輯得到資料)------集合迴圈遞迴

1.先再下面寫一個集合迴圈遞迴方法,然後呼叫。 public class Part { private String nplatPrice; private String estiPrice; //get..和set.. ...

DOS命令比較文字檔案txt的內容差異

將需要比較的文字檔案放置在同一個資料夾下。 如把a.txt、b.txt、c.txt放在資料夾/home/q/compare下。 1、開啟windows,輸入cmd,開啟DOS視窗。進入檔案目錄/home/q/compare下。 2、如果比較a.txt和b.txt兩個檔案。輸

java中map的融合(map有相同

試想這樣一個場景: 資料庫表中 有 城市資訊表 city_tbl; 有院士資訊表  ys_tbl ,其中院士有城市id欄位(id); 但是不是所有城市都有院士;  我們想要得到 城市的詳細資訊,包括院

表之間多的匹配!

  /* 一個專案中涉及到問題: 歷史工資資料中的員工資訊與最新的員工資訊之間存在差異, 需要對歷史資料到進行匹配後,才能進行匯入*/ --建立測試環境Declare @A Table( ID Int, Name varchar(10)) Declare @B Table( 

Mysql查詢不為null值為null 阿星小棧

在mysql中,查詢某欄位為null空時,切記不可用 = null,而是 is null,不為空則是 is not null 而不是 != null   select * from table where column is null; select * from ta

在同一張表中根據父子關係的進行遞迴的層級計算

資料庫中,paramNum和parentParamNum兩個欄位為父子關係的關聯欄位,為了對他們進行遞迴計算,以便得到層級關係,寫了以下的方法: private StringBuffer calParamEssentials(List paramEssentialsList

用python比較文件中內容的不同之處, 並輸出行號內容.

exist file diff pre ffline += == list cmp 代碼部分: ‘‘‘cmpfile.py - 比對兩個文件, 如果有不同之處, 打印內容和行號‘‘‘ import os class cmpFile: def __init__(

mysql比對資料庫表結構的方法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Mysql資料庫-----表記錄管理

表記錄管理 1.插入記錄(insert)        1)insert into 表名 values(值1),(值2)...;        2)insert into 表名(欄位,欄位2) values(

mysqlint建立聯合索引,沒有用到索引

這兩天有一個任務表 t_task_list ,搜尋條件下面都有,相關的索引也有,但就是用不到索引,應該是跟資料分佈有關,所以對索引做了調整。 最重要的不是對索引做了調整,而是,不要以為建了索引就一定能用到,還是根據資料的分佈情況來決定的,以後多注意吧,有慢查詢,一定看sql,看expl

mysql查詢不同的伺服器資料庫.

package com.dinglin; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; i