【问题标题】:compare columns for a table in different 2 databases比较不同 2 个数据库中表的列
【发布时间】:2013-07-20 19:46:08
【问题描述】:

我在 2 个不同的数据库中有 1 个表,在一个数据库中,列数为 284 列,在另一个数据库中,列数为 281 列,因此缺少 3 列。
是否有一个查询(不是我发现的名为 compare it 的工具)可以帮助找到丢失的列?
示例:

数据库 1
第 1 列
专栏2
专栏3
第 4 栏
第5栏
第6栏

数据库 2
第 1 列
专栏2
第 3 列

第 5 栏
第6栏


在上面的例子中缺少第 4 列,sybase 中是否有查询可以告诉我缺少的列是什么?

【问题讨论】:

    标签: sybase sap-ase


    【解决方案1】:

    为两个不同数据库中的两个表创建两个临时表,假设#TableColumns1和#TableColumns2

    CREATE TABLE #TableColumns1(ColumnName VARCHAR(255))
    CREATE TABLE #TableColumns2(ColumnName VARCHAR(255))
    
    INSERT INTO #TableColumns1
    SELECT SC.column_name
    FROM SYS.SYSCOLUMN SC, SYS.SYSTABLE ST 
    WHERE SC.table_id = ST.table_id AND ST.table_name = '<DatabaseName1.TableName1>';
    
    INSERT INTO #TableColumns1
    SELECT SC.column_name
    FROM SYS.SYSCOLUMN SC, SYS.SYSTABLE ST 
    WHERE SC.table_id = ST.table_id AND ST.table_name = '<DatabaseName2.TableName2>';
    

    现在再创建一个临时表#MissingTableColumns,其中将包含缺失列的实际结果

    CREATE TABLE #MissingTableColumns(ColumnName VARCHAR(255), TableName VARCHAR(255))
    
    INSERT INTO #MissingTableColumns
    (ColumnName, TableName)
    SELECT ColumnName, '<Table1Name>'
    FROM #TableColumns1, #TableColumns2 
    WHERE #TableColumns1.ColumnName *= #TableColumns2.ColumnName
    
    INSERT INTO #MissingTableColumns
    (ColumnName, TableName)
    SELECT ColumnName, '<Table2Name>'
    FROM #TableColumns1, #TableColumns2 
    WHERE #TableColumns1.ColumnName =* #TableColumns2.ColumnName
    

    希望这能解决您的问题。

    【讨论】:

    • 出色的回答 Abhishek
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2020-12-16
    相关资源
    最近更新 更多