Поиск заданной строки во всех полях всей схемы для Oracle - PullRequest
4 голосов
/ 06 апреля 2011

Как мы можем найти данную строку во всех полях всей схемы для Oracle?

Есть ли сценарий SQL для выполнения вышеизложенного в Oracle? если да, то как?

Можем ли мы сделать это любым другим сценарием?

Ответы [ 2 ]

4 голосов
/ 06 апреля 2011

" ALL_TAB_COLUMNS " является системной стабильной, имеет тип данных всех столбцов таблицы и т. Д.

" USER_TAB_COLUMNS " является системной стабильной, имеет тип данных всех столбцов таблицы и т.д.(какой владелец является текущим пользователем).(Спасибо, Рене)

Пример:

 SET SERVEROUTPUT ON SIZE 100000 -- maybe you have a lot of table and columns

    DECLARE
      matches INTEGER;
    BEGIN
      FOR columns IN (SELECT table_name, column_name FROM user_tab_columns where data_type = 'VARCHAR2') LOOP

        EXECUTE IMMEDIATE
          'SELECT COUNT(*) FROM '||t.table_name||' WHERE instr('||t.column_name||' , :1) > 0'
          INTO matches
          USING 'What you search';

        IF matches > 0 THEN
          dbms_output.put_line( t.table_name ||' '||t.column_name||' '||matches );
        END IF;

      END LOOP;

    END;
    /

этот запрос будет выводить table_name '' column_name '' и считать, если у вас есть стандартные столбцы и имена таблиц,Вы можете изменить запрос как IF столбцы> 0, затем написать запрос UNION в цикле и вернуть курсор или вернуть таблицу,

0 голосов
/ 06 апреля 2011

Можем ли мы сделать это любым другим сценарием?

Вы можете вывести базу данных на диск в виде текста, а затем использовать grep.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...