ERModel der Datebanken (ORACLE,MySQL,MS-SQL usw)

rwolf

Bekanntes Mitglied
hi all,

es geht um die Erstellung eines möglichst universellen Tools zum Kopieren von
Daten (zunächst mal einzelner Tabellen) zwischen zwei Datenbanken auf ganz verschiedenen URL's (z.B. Source : IP-Adresse\Servername nach Target : IP-Adresse\Servername).

Mit MS-SQL und MySQL klappt das schonmal in beiden Richtungen :)
Dabei bin ich aber erstmal von dbo als Standard-Schema bei MS-SQL und <kein Schema>
bei MySQL ausgegangen; bei ORACLE(hier erstmal 11g Testversion) falle ich damit aber "voll auf die Schnauze" :(

Mit den Connections hab ich bisher kein Problem, aber mit den Metadaten..

Meines Wissen gibt es bei den meisten DB's Schemata, aber wo gibt es - auch für Opa - verständliche ER-Modelle (möglichst grafisch) ?
bei ORACLE hab ich da mal was gesehen, aber das ist kaum verständlich, weil zuviel anderes mit in die Grafik eingebaut wird:mad:

Es geht also um die "Entitäten" Datenbank, Schema,User,Tabelle und um die Aufschlüsselung
per Metadaten mithilfe von Java !

bitte somit um Mithilfe bei der Suche nach entsprechenden Doks für zumindest MYSQL,MSSQL,ORACLE,IBM DB2, postgres,SYBASE(noch da ?)

anbei noch ein Screenshot aus der Serverdefinition des bisherigen Kopiertools..
 

Anhänge

  • conn2LocalMsSQLServer.jpg
    conn2LocalMsSQLServer.jpg
    122,6 KB · Aufrufe: 110

stg

Top Contributor
Was willst du denn mit irgendwelchen ER-Diagrammen anfangen? Willst du aus der einen Datenbank jeweils ein ER-Diagramm generieren und dann daraus auf der anderen Datenbank wieder das Schema generieren?
Wieso nicht einfach direkt per SQL? Sind doch alles SQL Datenbanken, die du da aufführst.... und du wirst dich vermutlich eh auf den kleinsten gemeinsamen Nenner einschränken müssen, andernfalls wird das ein Projekt, das du alleine sicherlich nicht in angemessener Zeit bewerkstelligen kannst.

Speziell zu Oracle kann da das package DBMS_METADATA und hier insbesondere die Funktion GET_DDL(...) für dich interessant sein.
Beispiel:
Code:
SELECT DBMS_METADATA.GET_DLL('TABLE','DEINE_TABELLE') FROM DUAL;
Das liefert dir zB direkt das SQL statement zum Erzeugen der Tabelle 'DEINE_TABELLE'
 

rwolf

Bekanntes Mitglied
hallo stg,

ich befürchte, daß meine Fragestellung nicht so ganz verstanden wurde..

bei MS-SQL und bei MySQL bin ich von der
Hierarchie Server(URL) -> DB -> Tabellen -> Tabellenfelder ausgegangen,
d.h. für Quelle und Ziel des Kopiervorganges habe ich ne Server-URL angegeben,
bekam damit per Metadaten die zum Server gehörigen Datenbanken -> davon eine ausgewählt,
bekam ich die Tabellen zu dieser DB -> aus den Tabellen eine ausgewählt bekam ich die Felder :
alles klar zur Erzeugung der SELECT- und INSERT-Skripte:)

bei ORACLE ist es aber wohl so , daß mit dem Einloggen auf dem Server auch über den User
das Schema zum USER und damit auch die Tabellenmenge festgelegt sind..von der Datenbank
ist in den Beispielskripten Nicht die Rede : so z.B. werden die Schemata gelesen mit :

Java:
ResultSet rscSh = dbmtd.getSchemas();
while(rscSh.next())
         System.out.println(rscSh.getString("TABLE_SCHEM"));[/I]
// --> kriegt man ein oder mehrere Schemata:)

                String   catalog          = null;
                String   schemaPattern    = "ORAWOLF";
                String   tableNamePattern = null;
                String[] types            = null;

                ResultSet resTables = dbmtd.getTables(
                    catalog, schemaPattern, tableNamePattern, types );

                while(resTables.next())
                {
                    String tableName = resTables.getString(3);
                    System.out.println("ora_analyze_test1 TableName : "+tableName);
                }
// -->kriegt man eine oder mehrere Tabellenamen;)

was sind 'Kataloge' bei ORACLE ?
mit folgendem kommt absolut NICHTS :

Java:
 ResultSet rscCtlg = dbmtd.getCatalogs();
      while(rscCtlg.next())
         System.out.println("ora_analyze_test1 rsCatalogs :                   
                                                "+rscCtlg.getString("TABLE_CAT"));


man versteht jetzt hoffentlich besser , warum für ORACLE ein ER-Modell hilfreich wäre..:confused:
 
Zuletzt bearbeitet von einem Moderator:

stg

Top Contributor
bei ORACLE ist es aber wohl so , daß mit dem Einloggen auf dem Server auch über den User
das Schema zum USER und damit auch die Tabellenmenge festgelegt sind..von der Datenbank
ist in den Beispielskripten Nicht die Rede

Ja, das ist auch so. Ein 100% Analogon zu "Datenbanken" in MySQL o.Ä. gibt es bei Oracle nicht. Zumindest für Oracle 11g (und frühere Version) läuft auf einem Oracle-"Server" (nicht physischer Server, sondern "Dienst") genau eine Datenbank.

bei MS-SQL und bei MySQL bin ich von der
Hierarchie Server(URL) -> DB -> Tabellen -> Tabellenfelder ausgegangen,

Wenn du mit entsprechenden Rechten angemeldet bist, dann kannst du auch unter Oracle alle existierenden Scheema / User abfragen. Das kommt den "Datenbanken" in MySQL usw. wohl am nächsten. Aber als empfehlenswert erachte ich das nicht.

Auf die ganzen JDBC-Methode zum Abrufen der META-Daten würde ich mich auch nicht wirklich verlassen. Da ist viel gar nicht oder nur unzureichend implementiert.

Was die Methode getCatalogs() zurückliefern soll, kann ich nur raten. Ich kenne Catalogs als eine Art zusätzliche Scheemas, die man zur Wiederherstellung von Daten nutzt. Dann gibts noch Catalog views .... aber wie auch immer, ich bin alles andere als ein DB Admin. Ich kenne Oracle Datenbank in erster Linie nur von der Anwender-Seite her. Wenn deine Fragen spezieller werden, dann ist das hier vermutlich auch nicht mehr das richtige Forum für dich.

Aber insgesamt seh ich immer noch nicht die großartigen Probleme oder was deine eigentliche Frage nun tatsächlich umfasst. Ich hab bisher so viel verstanden, dass du Tabellen (und / oder deren Inhalte?) von A nach B kopieren willlst.

Wenn du ein wenig basischer einfach nur Tabellen und Tabellen-Felder auslesen willst, dann schau dir mal USER_TABLES und USER_TAB_COLUMNS an.

man versteht jetzt hoffentlich besser , warum für ORACLE ein ER-Modell hilfreich wäre..:confused:

...nicht so wirklich :(
 

rwolf

Bekanntes Mitglied
hallo stg,
erstmal vielen vielen Dank für Deine "Anteilnahme" !

ich hab halt gemeint, man könne bei ORACLE die ganzen Metadaten mit SQL
holen,
z.B. in SQL-Plus : SELECT ora_database_name FROM dual;
gibt mir den Namen der aktuellen Datanbank

darauf aufbauend wollte ich mit SQL etwa folgendes machen : (PSEUDO-SQL) :
1.) SELECT <databases> FROM <server>
2.) SELECT <schemata> FROM <databases> WHERE database = selected-DB
3.) SELECT <tables> FROM <schemata> WHERE schema = selected-schema
4.) get Metadata FROM table
das funzt bei mir mit MS-SQL und MYSQL(da ohne Schema), aber eben Nicht mir ORACLE..

für so eine Konstruktion wäre ein ER-Model halt hilfreich..

weiß übrigens jemand, wie das bei IBM_DB2 ist ?

mittlerweile krieg ich jetzt meine Metadaten in mein Programm
gemäß der im Erstbeitrag gezeigten Grafik (Screenshot), nur
daß in der Liste links die einzige DB steht..
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Das printen der Ausgabe des Oracle-SQL-Statements in der Java-Eclipse-Konsole funktioniert nicht Datenbankprogrammierung 6
S Den letzten Eintrag aus Datenbank ziehen (Oracle SQL Dev.) Datenbankprogrammierung 14
S Oracle DB-Connection in .jar file ändern Datenbankprogrammierung 11
D Oracle Gateway oder Relay-Server Datenbankprogrammierung 5
N Oracle SQL - Nächst kleineren Namen2 zu einem Namen aus einer Tabelle Datenbankprogrammierung 3
M Oracle SQL Zeitabstand in Tagen Datenbankprogrammierung 11
P Datenbank Tool - besser als oracle SQL Developer gesucht mit effizinte Verbindungsverwaltung Datenbankprogrammierung 2
X JPA (EclipseLink) und Oracle Datenbank Datenbankprogrammierung 2
H Oracle Resize eines Images in Java und Rückgabe des Image als BLOB an die Oracle Datebank Datenbankprogrammierung 14
H Java Class zum komprimieren von Jpeg-Images zum Einbinden in Oracle DB - Bild als blob (in und out) Datenbankprogrammierung 23
L Oracle Oracle Datumsspalte auslesen Datenbankprogrammierung 5
L Oracle Daten von Oracle zu MSSQL übertragen Datenbankprogrammierung 4
L LOAD DATA INFILE mit Oracle Datenbankprogrammierung 24
D Abfrage - Spalte(Datum) ändern (Oracle) Datenbankprogrammierung 7
L Oracle Datenbank über Java aufrufen Datenbankprogrammierung 29
I Datenbankverbindung Oracle DB klappt nicht - getConnection returned null Datenbankprogrammierung 8
R DB2 Oracle 12 - invalid username/passwort Datenbankprogrammierung 1
AssELAss Verbindung i5 Series 7.1 / 7.2 (DB2) mit Oracle SQL Developer Datenbankprogrammierung 3
C Von Oracle zu Couchbase Datenbankprogrammierung 1
E Was sind die Vorteile von DB2 im Gegensatz zu einer Oracle-Datenbank? Datenbankprogrammierung 5
R Oracle jdbc Zugriff auf Oracle Datenbankprogrammierung 2
B No suitable driver found for jdbc:oracle:thin:@$HOST:$PORT:$SID Datenbankprogrammierung 7
S Oracle Database 11g , eclipse , Tabelle erstellen Datenbankprogrammierung 2
0 JDBC Oracle Verbindungsaufbau Datenbankprogrammierung 6
Q Oracle Linux: ClassNotFoundException: oracle.jdbc.driver.OracleDriver Datenbankprogrammierung 6
F Oracle Oracle JDBC Anbindung unter Glassfish 3.1.2 Datenbankprogrammierung 3
P Oracle Hibernate - Oracle-VarChar-Index wird nicht genutzt Datenbankprogrammierung 3
Kenan89 Oracle passwortspalte Datenbankprogrammierung 2
Kenan89 Oracle Daten einer Tabelle in Array speichern Oracle Datenbankprogrammierung 10
S Problemme mit oracle Datenbankprogrammierung 13
H Oracle Hibernate + Oracle Datenbankprogrammierung 3
c_sidi90 JDBC Oracle Connection schlägt fehl Datenbankprogrammierung 2
D Oracle SQL Ergebnis anzeigen und Applet Fehlermeldung Datenbankprogrammierung 12
1 Java - Oracle Restore Point Datenbankprogrammierung 2
X Rollback mit Savepoint funktioniert auf Oracle nicht (ORA-01086) Datenbankprogrammierung 4
E Datenbankverbindung mit Oracle JDBC und Eclipse Plugin Quantum db Datenbankprogrammierung 2
M Kann Oracle Datenbanktreiber nicht laden Datenbankprogrammierung 5
F Performance-Tool für Oracle Datenbankprogrammierung 2
Dit_ Oracle Oracle DB | Installation Datenbankprogrammierung 3
T Datum anpassen in Oracle Datenbankprogrammierung 5
R Oracle Java -> Tomcat -> Oracle Datenbankprogrammierung 4
M Oracle Probleme mit dem anbinden einer Oracle 10g Datenbank Datenbankprogrammierung 27
H Oracle DBUnit/JUnit auf Oracle mit verschiedenen Schemata? Datenbankprogrammierung 8
G Stored Procedure in Oracle, Txt erzeugen Datenbankprogrammierung 9
G Oracle Zeile löschen Datenbankprogrammierung 2
G Auf Oracle Schema Name zugreifen Datenbankprogrammierung 7
G INSERT DATE in Oracle-DB Datenbankprogrammierung 11
J Oracle oder SQL-Server Datenbankprogrammierung 18
A Oracle Session Parameter per JDBC? Datenbankprogrammierung 14
Z [ORACLE] Ausgabe Tabelle im GUI Datenbankprogrammierung 4
S Oracle Trigger Datenbankprogrammierung 5
cosmic Problem beim Update einer Oracle DB Datenbankprogrammierung 7
L JDBC Oracle Datenbankprogrammierung 2
N Oracle DB liefert nicht alle Datensätze Datenbankprogrammierung 3
H Oracle - Indizes werden nicht genommen Datenbankprogrammierung 6
P Probleme mit Oracle Timestamp Datenbankprogrammierung 3
A Loader-Dateien in Oracle Datenbankprogrammierung 4
G Oracle DB Link Datenbankprogrammierung 3
padde479 Connection String Oracle Datenbankprogrammierung 5
S Oracle Abfrage mit Platzhaltern Datenbankprogrammierung 3
D Oracle Datenbank exportieren Datenbankprogrammierung 3
Q admin tool für oracle datenbank - freeware Datenbankprogrammierung 7
G Blob aus Oracle-Datenbank Datenbankprogrammierung 2
J jdbc Oracle Connection refused Datenbankprogrammierung 6
S Oracle JDBC Treiber Problem Datenbankprogrammierung 4
J Bild in Oracle Datenbank - Grundkurs Datenbankprogrammierung 7
M Verbindung zu Oracle DB Datenbankprogrammierung 4
G Float Problem Java Oracle Datenbankprogrammierung 4
O Vector als Blob in Oracle Datenbank speichern Datenbankprogrammierung 3
O Oracle 11g wirft bei 90 % der installation eine Exception ? Datenbankprogrammierung 5
W ID des letzten eingefügten Werts ermitteln (Oracle) Datenbankprogrammierung 4
ARadauer Date Problem bei Oracle DB Datenbankprogrammierung 4
R oracle Anbindung geht im jar nicht Datenbankprogrammierung 8
D Insert Oracle BLOB Datenbankprogrammierung 1
O Oracle Client Software für ojdbc5! Datenbankprogrammierung 1
Y ORACLE - Autoincrement funktioniert nicht Datenbankprogrammierung 2
E Ein If und ein SELECT in Oracle? Datenbankprogrammierung 2
M Problem mit SUBSTR (Oracle) bzw. substring (Java) Datenbankprogrammierung 13
J Fehler bei Oracle-Datenbankverbindung Datenbankprogrammierung 2
E [SQL, Oracle] Zeile einfügen Datenbankprogrammierung 8
G Connection zu einer Oracle DB erstellen Datenbankprogrammierung 8
L Oracle: PL/SQL und Java Datenbankprogrammierung 3
K Oracle XE Connection Problem Datenbankprogrammierung 2
T INSERT-Befehl in Java für Oracle Datenbankprogrammierung 4
G Oracle-Record auslesen Datenbankprogrammierung 2
E JDBC Oracle Fehler, zugriff auf datenbank (Cluster) Datenbankprogrammierung 5
H Oracle - Partionierung von Tabellen Datenbankprogrammierung 4
H Oracle XE 10 mit Java Datenbankprogrammierung 4
B Oracle Driver Probleme Datenbankprogrammierung 2
R ResultSet liefert oracle.sql.TIMESTAMP, aber unbrauchbar Datenbankprogrammierung 9
thE_29 Speicherplatz von Oracle DB Datenbankprogrammierung 2
D Problem beim Zugriff auf eine Oracle-DB Datenbankprogrammierung 23
G Single Sign On bei Oracle Datenbankprogrammierung 3
E Jar File: NoClassDefFoundError: oracle/sql/ORAData Datenbankprogrammierung 2
H MIt oracle Verbinden (ungültiges Argument in Aufruf) Datenbankprogrammierung 4
W Wie auf Oracle zugreifen? Datenbankprogrammierung 3
R Oracle Express 10g mit JDBC Datenbankprogrammierung 3
N Wie kann ich mich mit Oracle verbinden? Datenbankprogrammierung 3
L oracle:ORA-01008: Nicht allen Variablen ist ein Wert zugeord Datenbankprogrammierung 1
G import Oracle.jdbc*; Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben