如何高效的查询oracle数据库中是否包含某个字段?

时间:2021-02-13 14:55:04
想从一个1000多张表的oracle实例中,查询某个字段在数据库的哪张表哪个字段中。

我目前的方法是:
1、查询出有多少个表,记录下来这个表名称;
2、依次查询每张表,记录下表的列;
3、查询表的每个列,比较查询结果中是否包含有我要查询的字符的记录,并输出这个表和记录名称。

我的算法太简单、低效(1000张表,每张表平均10列,大概需要4、5分钟,太慢了);

所以想求哪位大侠能够给个好方法,能够高效的完成查询、对比工作。

6 个解决方案

#1


select   column_name   from   user_tab_columns   where   table_name='AA';   
  user_segments   用户的表段信息

   user_tables    用户的表对象信息

   user_tab_columns   用户的表列信息

#2


要列匹配可以直接从oracle的数据字典表中查就可以了。不用先查有多少表。
你只是要列名比较还是记录内容的比较,有点没看明白。

#3


我是想查所有的记录。
例如:我想查出现在的数据库中是否有“王小二”这个内容,在哪个表的哪个字段中。

#4


查询前先判断表的字段类型,将类型匹配的字段放在同一个select语句中一并查询,再从结果集中挑选出匹配的字段记录

#5


引用 3 楼 whistle_2005 的回复:
我是想查所有的记录。
例如:我想查出现在的数据库中是否有“王小二”这个内容,在哪个表的哪个字段中。

那只有关联这几张表
 user_segments  用户的表段信息 

  user_tables    用户的表对象信息 

  user_tab_columns  用户的表列信息 

全部查询            可能很慢



没做过这个~~不知道还有什么办法

#6


to:  qq271175778 (枫之泪(泪洒天堂)) ——谢谢,把这个忘记了呵呵。

我现在这样做的:

先从 user_tab_columns 视图中查询出来所有的表和列名对应关系;
然后分别根据每个列名查询是否有匹配的结果。

速度很快,我的数据库用户中大概有1K多的表,数据不多,只要2秒左右就可以遍历一遍了^_^

#1


select   column_name   from   user_tab_columns   where   table_name='AA';   
  user_segments   用户的表段信息

   user_tables    用户的表对象信息

   user_tab_columns   用户的表列信息

#2


要列匹配可以直接从oracle的数据字典表中查就可以了。不用先查有多少表。
你只是要列名比较还是记录内容的比较,有点没看明白。

#3


我是想查所有的记录。
例如:我想查出现在的数据库中是否有“王小二”这个内容,在哪个表的哪个字段中。

#4


查询前先判断表的字段类型,将类型匹配的字段放在同一个select语句中一并查询,再从结果集中挑选出匹配的字段记录

#5


引用 3 楼 whistle_2005 的回复:
我是想查所有的记录。
例如:我想查出现在的数据库中是否有“王小二”这个内容,在哪个表的哪个字段中。

那只有关联这几张表
 user_segments  用户的表段信息 

  user_tables    用户的表对象信息 

  user_tab_columns  用户的表列信息 

全部查询            可能很慢



没做过这个~~不知道还有什么办法

#6


to:  qq271175778 (枫之泪(泪洒天堂)) ——谢谢,把这个忘记了呵呵。

我现在这样做的:

先从 user_tab_columns 视图中查询出来所有的表和列名对应关系;
然后分别根据每个列名查询是否有匹配的结果。

速度很快,我的数据库用户中大概有1K多的表,数据不多,只要2秒左右就可以遍历一遍了^_^