kleines Problemchen

Uniii

Neuer Benutzer
Beiträge
2
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 :(
 
Werbung:
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 :(


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?
 
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
/
 
Werbung:
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: :-(
 
Zurück
Oben