2016-12-15 3 views
0

特定の値を持つデータベース内のすべてのテーブルを検索するクエリを作成する必要があります。値の存在場所を知りたい。私は4000テーブルを含むデータベースを持っている。私は値を見つけることによって特定のテーブルを探したい。私は価値がある...しかし、テーブル名は知らない。それは可能なのだろうか?あなたに感謝特定のデータを持つデータベース内のすべてのテーブルを検索する方法

あなたはあなたのデータの内容は、そのテーブルに挿入されたテーブルのテーブルと名前を作成することができます
+0

値が格納されているテーブルのcolumn_nameを知っていますか? – Praveen

答えて

0


は、テーブルを作成します。

create table My_table (table_name varchar2(50), column_name varchar2(50)); 

次のクエリの挿入テーブル名をMY_TABLEにそれらのすべてがあなたのデータを持っていること:その後

declare 
    l_cnt  varchar2(20); 
    Query_str varchar2(100); 
begin 
    FOR i IN (SELECT o.object_Name, OBJECT_TYPE 
       FROM user_objects o 
      WHERE o.OBJECT_TYPE = 'TABLE') LOOP 
    for j in (SELECT column_name 
       FROM all_tab_cols 
       WHERE table_name = i.object_name) loop 

     Query_str := 'select count(*) from ' || i.object_name || 
        ' where to_char(' || j.column_name || ') = ''[Your_data]'''; 
     execute immediate Query_str 
     into l_cnt; 
     if l_cnt > 0 then 
     insert into my_table 
      (table_name, column_name) 
     values 
      (i.object_name, j.column_name); 
     end if; 
    end loop; 
    end loop; 
end; 

を任意のテーブルには、あなたのデータを持っている場合、MY_TABLEはそれらを示し
お手伝いをしたいと思います。

+0

私は今質問を編集してください、それを試してください –

関連する問題