首页 > 解决方案 > SQL 17 中的数据清理

问题描述

我是 SQL 新手,目前正在努力清理大型数据库。

在下面的链接中,您可以看到我正在使用的数据。这基本上是2018年在奥地利上市的所有保险公司的财务账目。

我现在想要做的是删除列 F1 和 F2 以及从每个表中删除行 1-4,重命名列名并取消透视数据。(这是我对清理的理解:)...)由于数据库包含许多表,我想知道,您是否知道一个命令可以帮助我一次性删除所有表中的 F1 和 F2 列?我不想手动更改每个表,因为我的日期直到 2014 年。

我正在使用的数据

标签: sqlsql-serverdata-cleaning

解决方案


我会给你一些提示,但如果不知道确切的细节,很难给出一个完整的解决方案。

要获取表名和列名,您可以使用查询:

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME like N'2018%'

或者您可以TABLE_NAME like根据需要更改。

如果你想查看查询并执行它,你可以扩展上面的内容给你Alter Table如下;

SELECT distinct 'Alter table ' + Table_Schema + '.' + Table_Name + ' drop column F1'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME like N'2018%'

这将根据需要为您生成脚本。您可以通过更改Select 字符串和 where 子句来扩展这些脚本,必要时使用正则表达式一次性捕获所有表。

正如@HoneyBadger 指出的那样,您应该知道前 4 行是什么,因为您在管理工作室中看到的前 4 行可能不是数据库本身内部的那些。您可以做的是查询您认为的那些并找到一种具体识别它们的方法,然后将删除语句编写为上述动态语句并执行。

无论如何,准备好备份,以防万一


推荐阅读