4 Stimmen

Suche nach einer bestimmten Zeichenkette in allen Feldern eines gesamten Schemas für Oracle

Wie kann man nach einer bestimmten Zeichenfolge in allen Feldern eines gesamten Oracle-Schemas suchen?

Gibt es ein Sql-Skript, um das oben genannte in Oracle zu tun? Wenn ja, wie?

Können wir das auch mit einem anderen Skript machen?

4voto

" ALLE_TAB_SPALTEN " ist eine Systable, hat alle Tabellenspalten als Datentyp usw.

" USER_TAB_COLUMNS " ist eine Systable, hat alle Tabellenspalten, Datentyp usw. (der Besitzer ist der aktuelle Benutzer). (Danke Rene)

Ein Beispiel:

 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;
    /

diese Abfrage wird table_name '' column_name'' und count ausgeben, wenn Sie standart Spalten- und Tabellennamen haben, können Sie die Abfrage als IF columns > 0 ändern und dann eine Abfrage UNION in Schleife schreiben und den Cursor zurückgeben, oder eine Tabelle zurückgeben,

0voto

Können wir das auch mit einem anderen Skript machen?

Sie können die Datenbank als Text auf die Festplatte ausgeben und dann grep .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X