我使用Redgate工具来同步SQL Server数据库中的数据,在此过程中,该工具在每个表中创建了四个新列,其名称类似于createdby、updatedby等。现在数据已同步,我不再需要这些列。是否有一种简单的方法(可能是脚本)来删除这些列?
createdby
updatedby
kmbjn2e31#
可以通过运行以下语句删除这些列
ALTER TABLE table_name DROP COLUMN column_name;
https://www.sqlservertutorial.net/sql-server-basics/sql-server-alter-table-drop-column/编辑:正如Dale所建议的,我们的目的可能是想办法集体删除这些专栏,所以这里有一个更新:我倾向于生成不需要 * 完全 * 自动化的代码,但需要相对容易更新。如果我有几十个或几百个表需要删除额外的列,我会编写一个类似下面的查询,然后从SSMS的下部窗格复制结果并执行生成的脚本。
select 'alter table ' + quotename(table_schema) + '.' + quotename(table_name) + ' drop column ' + quotename(column_name) from information_schema.columns where 1=1 and column_name in ('createdby', 'updatedby')
i2loujxw2#
这里有一个替代的解决方案,不如@dalek使用一个新的db项目和tool-schema-compare将架构吸入Visual Studio。然后使用下面的正则表达式替换所有,用空替换。这将删除不需要的列
\[CreatedAt\][^\,.]+\,
这将删除表列create末尾不需要的列之前的所有悬挂逗号
\,([\s\r][\s]+)+\)
2条答案
按热度按时间kmbjn2e31#
可以通过运行以下语句删除这些列
https://www.sqlservertutorial.net/sql-server-basics/sql-server-alter-table-drop-column/
编辑:正如Dale所建议的,我们的目的可能是想办法集体删除这些专栏,所以这里有一个更新:
我倾向于生成不需要 * 完全 * 自动化的代码,但需要相对容易更新。如果我有几十个或几百个表需要删除额外的列,我会编写一个类似下面的查询,然后从SSMS的下部窗格复制结果并执行生成的脚本。
i2loujxw2#
这里有一个替代的解决方案,不如@dalek
使用一个新的db项目和tool-schema-compare将架构吸入Visual Studio。然后使用下面的正则表达式替换所有,用空替换。
这将删除不需要的列
这将删除表列create末尾不需要的列之前的所有悬挂逗号