如何在含百张表的数据库中批量查找指定列及实体?
搜索数据库中的指定列名及目标实体
一、查找指定列名所属的表
不同数据库可通过系统元数据表快速检索,无需逐个检查表,以下是主流数据库的实现脚本:
MySQL/MariaDB
SELECT table_schema AS '数据库名', table_name AS '表名' FROM information_schema.COLUMNS WHERE column_name = '你的目标列名' ORDER BY table_schema, table_name;
替换'你的目标列名'为要查找的列名,结果会返回所有包含该列的数据库和表。
PostgreSQL
SELECT table_schema AS "数据库名", table_name AS "表名" FROM information_schema.columns WHERE column_name = '你的目标列名' ORDER BY table_schema, table_name;
若仅需查询当前连接的数据库,可添加条件:AND table_schema = current_schema()
SQL Server
SELECT TABLE_CATALOG AS '数据库名', TABLE_NAME AS '表名' FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = '你的目标列名' ORDER BY TABLE_CATALOG, TABLE_NAME;
二、在找到的列中搜索目标实体
找到列所属的表后,可生成批量查询语句快速检索目标实体,示例如下:
MySQL版本
SELECT CONCAT( 'SELECT ''', table_name, ''' AS 表名, ', column_name, ' FROM ', table_name, ' WHERE ', column_name, ' = ''你的目标实体'';' ) AS 查询语句 FROM information_schema.COLUMNS WHERE column_name = '你的目标列名';
执行该语句会生成一系列查询脚本,复制这些脚本执行即可获取包含目标实体的表和对应列值。
SQL Server版本
SELECT 'SELECT ''' + TABLE_NAME + ''' AS 表名, ' + COLUMN_NAME + ' FROM ' + TABLE_NAME + ' WHERE ' + COLUMN_NAME + ' = ''你的目标实体'';' AS 查询语句 FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = '你的目标列名';
内容的提问来源于stack exchange,提问作者Barney Collins
相关产品推荐
相关产品推荐

