我目前的方法是:
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 用户的表列信息
user_segments 用户的表段信息
user_tables 用户的表对象信息
user_tab_columns 用户的表列信息
#2
要列匹配可以直接从oracle的数据字典表中查就可以了。不用先查有多少表。
你只是要列名比较还是记录内容的比较,有点没看明白。
你只是要列名比较还是记录内容的比较,有点没看明白。
#3
我是想查所有的记录。
例如:我想查出现在的数据库中是否有“王小二”这个内容,在哪个表的哪个字段中。
例如:我想查出现在的数据库中是否有“王小二”这个内容,在哪个表的哪个字段中。
#4
查询前先判断表的字段类型,将类型匹配的字段放在同一个select语句中一并查询,再从结果集中挑选出匹配的字段记录
#5
那只有关联这几张表
user_segments 用户的表段信息
user_tables 用户的表对象信息
user_tab_columns 用户的表列信息
全部查询 可能很慢
没做过这个~~不知道还有什么办法
#6
to: qq271175778 (枫之泪(泪洒天堂)) ——谢谢,把这个忘记了呵呵。
我现在这样做的:
先从 user_tab_columns 视图中查询出来所有的表和列名对应关系;
然后分别根据每个列名查询是否有匹配的结果。
速度很快,我的数据库用户中大概有1K多的表,数据不多,只要2秒左右就可以遍历一遍了^_^
我现在这样做的:
先从 user_tab_columns 视图中查询出来所有的表和列名对应关系;
然后分别根据每个列名查询是否有匹配的结果。
速度很快,我的数据库用户中大概有1K多的表,数据不多,只要2秒左右就可以遍历一遍了^_^
#1
select column_name from user_tab_columns where table_name='AA';
user_segments 用户的表段信息
user_tables 用户的表对象信息
user_tab_columns 用户的表列信息
user_segments 用户的表段信息
user_tables 用户的表对象信息
user_tab_columns 用户的表列信息
#2
要列匹配可以直接从oracle的数据字典表中查就可以了。不用先查有多少表。
你只是要列名比较还是记录内容的比较,有点没看明白。
你只是要列名比较还是记录内容的比较,有点没看明白。
#3
我是想查所有的记录。
例如:我想查出现在的数据库中是否有“王小二”这个内容,在哪个表的哪个字段中。
例如:我想查出现在的数据库中是否有“王小二”这个内容,在哪个表的哪个字段中。
#4
查询前先判断表的字段类型,将类型匹配的字段放在同一个select语句中一并查询,再从结果集中挑选出匹配的字段记录
#5
那只有关联这几张表
user_segments 用户的表段信息
user_tables 用户的表对象信息
user_tab_columns 用户的表列信息
全部查询 可能很慢
没做过这个~~不知道还有什么办法
#6
to: qq271175778 (枫之泪(泪洒天堂)) ——谢谢,把这个忘记了呵呵。
我现在这样做的:
先从 user_tab_columns 视图中查询出来所有的表和列名对应关系;
然后分别根据每个列名查询是否有匹配的结果。
速度很快,我的数据库用户中大概有1K多的表,数据不多,只要2秒左右就可以遍历一遍了^_^
我现在这样做的:
先从 user_tab_columns 视图中查询出来所有的表和列名对应关系;
然后分别根据每个列名查询是否有匹配的结果。
速度很快,我的数据库用户中大概有1K多的表,数据不多,只要2秒左右就可以遍历一遍了^_^