当前位置:   article > 正文

MYSQL比较两个数据库中表和字段的差异_两种mysql表字段不一致转换后进行比较

两种mysql表字段不一致转换后进行比较
-- 比较两个数据库中表的差异

-- u表,p存储过程,v视图
-- INTFSIMSNEW新库,INTFSIMS旧库

  1. SELECT NTABLE = A.NAME, OTABLE = B.NAME
  2. FROM INTFSIMSNEW..SYSOBJECTS A
  3. LEFT JOIN INTFSIMS..SYSOBJECTS B
  4. ON A.NAME = B.NAME
  5. WHERE ISNULL(B.NAME, '') = ''
  6. AND A.XTYPE = 'U'
  7. UNION ALL
  8. SELECT NTABLE = B.NAME, OTABLE = A.NAME
  9. FROM INTFSIMS..SYSOBJECTS A
  10. LEFT JOIN INTFSIMSNEW..SYSOBJECTS B
  11. ON A.NAME = B.NAME
  12. WHERE ISNULL(B.NAME, '') = ''
  13. AND A.XTYPE = 'U'
  14. ORDER BY 1, 2

-- 比较两个数据库中每个表字段的差异

  1. SELECT
  2. 表名A = CASE WHEN ISNULL(A.TABLENAME, '') <> '' THEN A.TABLENAME ELSE B.TABLENAME END,
  3. 字段名A = A.FIELDNAME,
  4. 字段名B = B.FIELDNAME,
  5. 顺序= A.FIELDSNO,
  6. 说明= CASE WHEN A.FIELDTYPE <> B.FIELDTYPE THEN '类型: ' + A.FIELDTYPE + '-->' + B.FIELDTYPE
  7. WHEN A.FIELDSNO <> B.FIELDSNO THEN '顺序: ' + str(A.FIELDSNO) + '-->' + str(B.FIELDSNO)
  8. WHEN A.LENGTH <> B.LENGTH THEN '长度: ' + str(A.LENGTH) + '-->' + str(B.LENGTH)
  9. WHEN A.LENSEC <> B.LENSEC THEN '小数位: ' + str(A.LENSEC) + '-->' + str(B.LENSEC)
  10. WHEN A.ALLOWNULL <> B.ALLOWNULL THEN '允许空值: ' + str(A.ALLOWNULL) + '-->' + str(B.ALLOWNULL)
  11. END
  12. FROM (SELECT
  13. TABLENAME = B.NAME,
  14. FIELDNAME = A.NAME,
  15. FIELDSNO = A.COLID,
  16. FIELDTYPE = C.NAME,
  17. LENGTH = A.LENGTH,
  18. LENSEC = A.XSCALE,
  19. ALLOWNULL = A.ISNULLABLE
  20. FROM INTFSIMSNEW..SYSCOLUMNS A
  21. LEFT JOIN INTFSIMSNEW..SYSOBJECTS B
  22. ON A.ID = B.ID
  23. LEFT JOIN INTFSIMSNEW..SYSTYPES C
  24. ON A.XUSERTYPE = C.XUSERTYPE
  25. WHERE B.XTYPE = 'U') A
  26. FULL JOIN (SELECT
  27. TABLENAME = B.NAME,
  28. FIELDNAME = A.NAME,
  29. FIELDSNO = A.COLID,
  30. FIELDTYPE = C.NAME,
  31. LENGTH = A.LENGTH,
  32. LENSEC = A.XSCALE,
  33. ALLOWNULL = A.ISNULLABLE
  34. FROM INTFSIMS..SYSCOLUMNS A
  35. LEFT JOIN INTFSIMS..SYSOBJECTS B
  36. ON A.ID = B.ID
  37. LEFT JOIN INTFSIMS..SYSTYPES C
  38. ON A.XUSERTYPE = C.XUSERTYPE
  39. WHERE B.XTYPE = 'U') B
  40. ON A.TABLENAME = B.TABLENAME
  41. AND A.FIELDNAME = B.FIELDNAME
  42. WHERE ISNULL(A.TABLENAME, '') = ''
  43. OR ISNULL(B.TABLENAME, '') = ''
  44. OR A.FIELDTYPE <> B.FIELDTYPE
  45. OR A.FIELDSNO <> B.FIELDSNO
  46. OR A.LENGTH <> B.LENGTH
  47. OR A.LENSEC <> B.LENSEC
  48. OR A.ALLOWNULL <> B.ALLOWNULL
  49. ORDER by 1, 4


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/957639
推荐阅读
相关标签
  

闽ICP备14008679号