Oracle Repräsentative Namen für die Column Types

lam_tr

Top Contributor
Hallo zusammen,

ich versuche aktuell die Tabelleninformationen auszulesen über folgenden Code. Gibt es einen Weg die Column type name herauszufinden. Aktuell nehme ich den Integer Wert und checke es über Types nach. Habt ihr eventuell bessere Vorschläge?

Java:
            ResultSetMetaData rsmd = rs.getMetaData();
            int columnCount = rsmd.getColumnCount();
            for (int i = 0; i < columnCount; i++) {
                String name = rsmd.getColumnName(i + 1);
                int type = rsmd.getColumnType(i + 1);
                String datatype = "";
                switch (type) {
                case Types.SMALLINT:
                    datatype = "SMALLINT";
                    break;
                case Types.INTEGER:
                    datatype = "INTEGER";
                    break;
                case Types.BIGINT:
                    datatype = "BIGINT";
                    break;
                case Types.DECIMAL:
                    datatype = "DECIMAL";
                    break;
                case Types.NUMERIC:
                    datatype = "NUMERIC";
                    break;
                case Types.FLOAT:
                    datatype = "FLOAT";
                    break;
                case Types.DOUBLE:
                    datatype = "DOUBLE";
                    break;
                case Types.VARCHAR:
                    datatype = "VARCHAR";
                    break;
                case Types.TIMESTAMP:
                    datatype = "TIMESTAMP";
                    break;
                case Types.CLOB:
                    datatype = "TIMESTAMP";
                    break;
                default:
                }

                System.out.println(name+" : "+datatype);
            }

Grüße
lam
 
Wozu soll das denn gut sein? Normalerweise weiß du doch was in der Tabelle steht und erstellst darauf das dazu passende Objekt.
 
Ggf. direkt das Oracle Data Dictionary abfragen über Native Queries, dann bekommst du es direkt als String. Ich mein, du willst ja eh Datenbankspezifische Informationen auslesen - da kann man auch direkt mit Native Queries arbeiten
 
Die haben dummerweise nicht nur unterschiedliche Datentypen. Eine einfache Konvertierung wird es da eh nicht geben da du auch nahezu alle anderen Queries ändern must.
 
Je nachdem was genau du vorhast: Liquibase und/oder JOOQ könnten interessant sein.

(Querys die man ändern müsste gibts mit letzterem auch nicht.)
 
Ich will hauptsächlich nur Tabellenschemen von Oracle nach MSSQL. Das sollte eigentlich unkompliziert gehen oder denke ich da viel zu einfach?
 
Ein Blick in diese Bibliothek sagt mir nicht viel. So wie es aussieht, kann man damit change logs und Revisions von Datenbank Schemas erstellen. Kannst du kurz deine Idee erläutern?
Deine Beschreibung passt schon im groben 🙂

mit generateChangeLog könnte man ein Changelog der bestehenden Datenbank erstellen (was dann die Änderungen von frischer Datenbank zum aktuellen Zustand beschreibt), und die Änderungen kann man dann auf die neue Datenbank anwenden.

Anpassen der Typen etc. sollte dabei automatisch passieren (das wäre der Teil, den man mal testen müsste, ob’s da vielleicht noch irgendwelche Stolperfallen gibt).
 

Neue Themen


Zurück
Oben