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