快速定位DB中列对应的表-Mysql Mssql Oracle

在脱数据量比较多比较杂乱数据库的时候,如何快速定位到自己想要的数据,如何定位自己想要的列在什么表的具体位置,这里提供一个解决方案

mysql 数据库利用 information_schema; 来快速定位,前提版本支持:
  1. mysql> select table_schema,table_name,column_name from information_schema.columns where column_name like 'password' ;
这里快速定位到 password列的 位置

mssql 数据库可以利用Sysobjects 系统表,查询列明中包含user的表
  1. Select *
  2. From sysobjects s
  3. Where Exists(
  4. Select *
  5. From syscolumns
  6. Where ID = s.ID and name like '%user%'
  7. )
sql server 全部库:
        
  1. declare @i int , @id int , @dbname varchar ( 255 ), @sql varchar ( 255 )
  2. set @i = 6
  3. set @id =( select count (*) from master .. sysdatabases )
  4. drop table #t
  5. create table #t (
  6. dbname varchar ( 255 ),
  7. tablename varchar ( 255 ),
  8. columnname varchar ( 255 )
  9. )
  10. while ( @i < @id )
  11. begin
  12. set @i = @i + 1 ;
  13. set @dbname = ( select name from master .. sysdatabases where dbid = @i )
  14. set @sql = 'use ' + @dbname + ';insert [#t] select table_catalog,table_name,column_name from information_schema.columns where column_name like ''%pass%'' or column_name like ''%pwd%'' or column_name like ''%mail%'''
  15. exec ( @sql )
  16. -- print @sql
  17. end
  18. select * from #t
  19. drop table #t
  20. go
sql server 单个库:
        
  1. SELECT sysobjects . name as tablename , syscolumns . name as columnname FROM sysobjects JOIN syscolumns ON sysobjects . id = syscolumns . id WHERE sysobjects . xtype = 'U' AND ( syscolumns . name LIKE '%pass%' or syscolumns . name LIKE '%pwd%' or syscolumns . name LIKE '%first%' );
oracle:
        
  1. select column_name , data_type , data_length , data_precision , data_scale from user_tab_columns [ where table_name = '表名' and column_name like '%大写列名%' ];
          
  1. SELECT owner , table_name FROM all_tab_columns WHERE column_name LIKE ‘% PASS %’;