快速定位DB中列对应的表

2014-08-25 11:21:44 30 3831
有时候在脱数据量比较多比较杂乱数据库的时候,如何快速定位到自己想要的数据,如何定位自己想要的列在什么表的具体位置,这里提供一个解决方案,可能很多人都知道,知道的就略过,请轻喷 :)

mysql 数据库利用 information_schema; 来快速定位,前提版本支持

mysql> select table_schema,table_name,column_name from information_schema.column
s where column_name like '%password%' ;


这里快速定位到 password列的 位置

同样mssql 数据库可以利用Sysobjects  系统表

Select *
From sysobjects s
Where Exists(
Select *
From syscolumns
Where ID = s.ID and name like '%user%'
)

查询列明中包含user的表

ps:如有错误请及时指正 :)

关于作者

Audit0r7篇文章84篇回复

评论30次

要评论?请先  登录  或  注册
  • 10楼
    2014-8-25 15:18
    hostay

    sql server 全部库:declare @i int,@id int,@dbname varchar(255),@sql varchar(255) set @i = 6 set @id=(select count(*) from master..sysdatabases)drop table #tcreate table #t ( dbname varchar(255), tablename varchar(255), columnname varchar(255))while (@i < @id) begin set @i = @i + 1; set @dbname = (select name from master..sysdatabases where dbid= @i) set @sql = 'use '+ @dbname+';insert 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%''' exec (@sql) --print @sql endselect * from #tdrop table #tgo=-------------------------------------------sql server单个库: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%');

    1
  • 9楼
    2014-8-25 15:17
    anlfi

    的确有人发过https://www.t00ls.com/thread-26864-1-1.html大同小异

    1

    俺权限不够

  • 8楼
    2014-8-25 14:53

    楼主这个还是不错的,我一般直接看代码的源代码,看查询的是什么表,但是java就不会了

  • 7楼
    2014-8-25 14:39

    mysql注入的时候常常用

  • 6楼
    2014-8-25 12:55

    sql server 全部库: declare @i int,@id int,@dbname varchar(255),@sql varchar(255)     set @i = 6     set @id=(select count(*) from master..sysdatabases)  drop table #t create table #t (     dbname varchar(255),     tablename varchar(255),     columnname varchar(255) )  while (@i < @id)     begin         set @i = @i + 1;         set @dbname = (select name from master..sysdatabases where dbid= @i)         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%'''         exec (@sql)         --print @sql     end  select * from #t drop table #t  go  =------------------------------------------- sql server单个库: 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%');

  • 5楼
    2014-8-25 12:53
  • 4楼
    2014-8-25 12:53

    嗯,这方法不错,提高效率,记得有人发过类似的,

  • 3楼
    2014-8-25 12:34
    wefgod

    where column_name like '%password%' ;为什么不加%?

    1

    这里只是 一个思路,有的列明也有可能叫 pwd 等等,这个根据平时自己的经验进行匹配,关于sql like 用法 可自行百度,语句是死人是活的。 :)

  • 2楼
    2014-8-25 12:25
    wefgod

    where column_name like '%password%' ;为什么不加%?

    1

    LZ为了更加准确吧,他在下面的user中就加了

  • 1楼
    2014-8-25 12:03

    where column_name like '%password%' ; 为什么不加%?