我在2个不同的数据库中有1个表,在数据库中,列数是284列,在另一个数据库中,列数为281列,因此缺少3列。
是否有一个查询(不是一个工具,因为我发现了一些名为比较它的东西),它可以帮助找到缺少的列?
例如:
数据库1
COLUMN1
列2
栏3
column4
column5
column6
数据库2
COLUMN1
列2
栏3
column5
column6
在上面的示例中,缺少第4列,sybase中是否有查询可以告诉我缺少的列是什么?
答案 0 :(得分:2)
为两个不同数据库中的两个表创建两个临时表,假设为#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
希望这能解决您的问题。