Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

kleines Problemchen

Dieses Thema im Forum "Oracle" wurde erstellt von Uniii, 27 Mai 2013.

  1. Uniii

    Uniii Neuer Benutzer

    Hallo,
    ich kann zwar etwas SQL, stehe aber nun vor einem mir unlösbaren Problem, könnt Ihr mir helfen?

    Ich soll ein Script erstellen, dass folgendes tut:

    ALLE Oracle Tabellen in einer Datenbank durchgeht, und zu jeder Tabelle die Anzahl der Datensätze ausliest, zusätzlich den ersten und letzten Datensatz ausgibt und das ganze in eine CSV Datei schreibt.

    zusätzlich brauche ich noch die Gesamtanzahl der Objekte in Oracle.

    Ich finde keinen Ansatz :(
     
  2. akretschmer

    akretschmer Datenbank-Guru


    Nun ja, als Ansatz: vermutlich gibt es auch in Oraggle spezielles Schema, wo man reichlich Metadaten findet: information_schema. Das sollte es geben, gehört zur SQL-Spec.
    Da gibt es dann auch eine Tabelle information_schema.tables, welches die Namen aller Tabellen (und anderer Objekte wie VIEWs) enthält. Via einer SP könntest Du da also die Namen aller Tabellen finden, dann die Anzahl der records ermitteln. Nicht ganz klar ist mir, warum der erste/letzte Datensatz in eine CSV zu schreiben ist: erst einmal operieren Datenbanken auf Mengen. Um den ersten/letzten Datensatz je Tabelle zu erhalten benötigst Du also jeweils ein Ordnungskriterium. Nächstes Problem: in einer CSV stehen typischerweise viele Datensätze mit dem selben Aufbau. Deine Tabellen werden aber sehr sicher jeweils unterschiedliche Spalten und Typen haben.
    Gesamtanzahl der Objekte: da solltest Du definieren, was alles als Objekt gilt. Ein VIEW? TRIGGER? RULE? Stored Procedure? Indexe? Constraints?
     
  3. db.wizard

    db.wizard Aktiver Benutzer

    Hallo ,

    Zumindest für das Zählen der Datensätze aller Tabellen eines Schemas kan ich dir ein Script liefern. Es erstellt eine View, welche die Informationen beinhaltet. Bedenke, dass die Ausführung je nach Schema ein Weilchen dauern könnte

    Grüsse

    Code:
    CREATE OR REPLACE FORCE VIEW count_rows_fromalltables_xml
    (
        table_name,
        COUNT
    )
    AS
        SELECT table_name,
              TO_NUMBER (
                  EXTRACTVALUE (
                      xmltype (
                          DBMS_XMLGEN.
                            getxml ('select count(*) c from ' || table_name)),
                      '/ROWSET/ROW/C'))
                  COUNT
          FROM user_tables
    /
     
  4. Uniii

    Uniii Neuer Benutzer

    Hallo,
    dass die Daten unterschiedlich aussehen ist mit bewusst, ich will das Script auf 2 verschiedenen Datenbanken auf unterschiedlichen Servern, welche keine Verbindung zueinander haben ausführen, dass ich zumindest augenscheinlich eine Konsistenz überprüfen kann.

    Leider funktioniert deine View nicht. ich erhalte einen ORA-04063: :-(
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden