PostgreSQL Anzahl der Spalten ermitteln

capri

Mitglied
Hallo Forum,

ich möchte ein PostgreSQL-Schema in Oracle migrieren. Dafür brauche ich für jede Tabelle die Anzahl der Spalten. Ich habe verschiedene Methoden im Netz gefunden und ausprobiert, aber kriege nicht das Richtige raus.

Wie kann ich die Anzahl der Spalten am sinnvollsten ermitteln?


Hier mein Code:

=========================================================
public void getSch(ActionEvent event2) {

Statement stmt = null;
try {
stmt = con1.createStatement();
} catch (SQLException ex) {
Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
}
try {
DatabaseMetaData dbmd = con1.getMetaData();
try (ResultSet tables = dbmd.getTables(null, "public", "%", new String[] { "TABLE" })) {
while (tables.next()) {
// Create Table anfangen
String myCreateTable = "CREATE TABLE IF NOT EXISTS ";

String tName = tables.getString("TABLE_NAME");

ResultSet columns = dbmd.getColumns(null, null, tName, null);
// Create Table fortführen
myCreateTable += tName + "(";

int y=0;
int anzahl Spalten = ?????????????????????????????????????????


while (columns.next()) {
// Spalten
String colName = columns.getString("COLUMN_NAME");
String colType = columns.getString("TYPE_NAME");
String colSize = columns.getString("COLUMN_SIZE"); // String, weil manche Längen Strings sind

// convert to oracle
if ("serial".equals(colType)) { colType = "NUMBER"; }
if ("int4".equals(colType)) { colType = "NUMBER"; }
if ("text".equals(colType)) { colType = "CLOB"; }
if ("varchar".equals(colType)) { colType = "VARCHAR2"; }

// Create Table fortführen
myCreateTable += colName+" "+colType+"("+colSize+") ";

// Create Table fortführen
//Wenn letztes Element des Resultsets erreicht ist, dann Klammer zu, ansonsten ein Komma
if (y < anzahlSpalten) {
myCreateTable += ",";
} else {
myCreateTable += ")";
}

}
// Schema - Migration
System.out.println(myCreateTable);
}
}
} catch (SQLException ex) {
Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
}
}
==========================================================

Danke im Voraus
capri
 

httpdigest

Top Contributor
Wäre für solche eine PostgreSQL -> Oracle Migration nicht ein existierendes Tool viel besser geeignet?
Z.B. kannst du ja erstmal mit pg_dump -s ein DDL Script aus deiner PG Datenbank generieren, und dann noch nach Bedarf Spaltentypen anpassen (z.B. BOOLEAN nach CHAR(1) oder so) und dann per SQL Client in Oracle ausführen/importieren.
Falls du doch darauf bestehst, etwas selber zu basteln: Wozu brauchst du die Anzahl der Spalten?
Anscheinend brauchst du die doch nur, um zu wissen, ob du nun ein Komma oder eine schließende runde Klammer generieren musst, wenn du über das ResultSet iterierst. Hierfür kannst du deinen Code ganz einfach restrukturieren:
Java:
boolean hasNext = columns.next();
while (hasNext) {
  ...
  hasNext = columns.next();
  if (hasNext) {
    // ","
  } else {
    // ")"
  }
}
 

capri

Mitglied
Hallo httpdigest,

viele Dank für Deine Antwort!
Wäre für solche eine PostgreSQL -> Oracle Migration nicht ein existierendes Tool viel besser geeignet?
Z.B. kannst du ja erstmal mit pg_dump -s ein DDL Script aus deiner PG Datenbank generieren, und dann noch nach Bedarf Spaltentypen anpassen (z.B. BOOLEAN nach CHAR(1) oder so) und dann per SQL Client in Oracle ausführen/importieren.
Es handelt sich um eine Aufgabe in der Uni, also darf ich nicht auf die fertigen Tools zurückgreifen.

Falls du doch darauf bestehst, etwas selber zu basteln: Wozu brauchst du die Anzahl der Spalten?
Anscheinend brauchst du die doch nur, um zu wissen, ob du nun ein Komma oder eine schließende runde Klammer generieren musst, wenn du über das ResultSet iterierst. Hierfür kannst du deinen Code ganz einfach restrukturieren:
Java:
boolean hasNext = columns.next();
while (hasNext) {
  ...
  hasNext = columns.next();
  if (hasNext) {
    // ","
  } else {
    // ")"
  }
}
Ja, genau dafür brauche ich die Anzahl der Spalten. Danke die für den Lösungsvorschlag, hat alles prima funktioniert!

Gruß, capri
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Anzahl der Spalten eines ResultSets bestimmen Datenbankprogrammierung 5
ruutaiokwu Duplikate auf bestimmte Anzahl begrenzen Datenbankprogrammierung 8
A Maximale Anzahl offener Cursor überschritten Datenbankprogrammierung 5
OnDemand SQL Query Anzahl der Werte Datenbankprogrammierung 8
Kandum MySQL Anzahl gefundener Datensätze bleibt gleich, auch wenn mehr existieren und ausgegeben werden Datenbankprogrammierung 3
S Anzahl Datensätze in db4o Datenbankprogrammierung 2
N Prepared Statement mit unbekannter Anzahl von Where-Clauses Datenbankprogrammierung 30
B Die Anzahl der Datensaetze einer Datenbank anzeigen Datenbankprogrammierung 2
Guybrush Threepwood H2: Anzahl an Usern begrenzen Datenbankprogrammierung 2
I MySQL - Anzahl Tabellen heraus finden Datenbankprogrammierung 6
A Maximale Anzahl offener Cursor überschritten Datenbankprogrammierung 4
I Anzahl unterschiedlicher Datensätze ausgeben Datenbankprogrammierung 2
D Anzahl der Elemente im ResultSet ermitteln Datenbankprogrammierung 8
J Maximale Anzahl von char in SQL Datenbankprogrammierung 11
E Maximale Anzahl offener Cursor Datenbankprogrammierung 9
A Maximale Anzahl offener Cursor erreicht Datenbankprogrammierung 3
Z Zeilen-Anzahl abfragen bei Datenbank Datenbankprogrammierung 4
G Anzahl der Datensaetze abfragen Datenbankprogrammierung 11
rambozola große anzahl an inserts bei oracle db unperformant Datenbankprogrammierung 15
S Anzahl geänderte Records Datenbankprogrammierung 2
V Anzahl der Datensätze abfragen Datenbankprogrammierung 9
B PreparedStatement - anzahl ParameterValues Datenbankprogrammierung 6
M Anzahl der Tabellen herausfinden Datenbankprogrammierung 6
M begrenzte anzahl von resultsets pro connection?? Datenbankprogrammierung 6
D Anzahl der zurückgelieferten Datensätze Datenbankprogrammierung 2
OnDemand Daten auf mehrere Tabellen aufteilen oder Spalten nutzen Datenbankprogrammierung 2
P Derby/JavaDB JPA Reihenfolge Spalten ändern Datenbankprogrammierung 6
E Wie kann man BLOB-Spalten in DB2 einfügen? Datenbankprogrammierung 9
E Kann man in DB2 Boolean Spalten erstellen? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
D Aufteilung ähnlicher Spalten Datenbankprogrammierung 2
M DES und ASC auf verschiedene Spalten anwenden Datenbankprogrammierung 2
S MySQL Befüllen von mehreren Spalten Datenbankprogrammierung 1
I Was ist besser: Tabellen oder Spalten Datenbankprogrammierung 1
V Hibernate und optionale Spalten? Datenbankprogrammierung 2
turmaline [HQL] Dynamische Spalten erzeugen Datenbankprogrammierung 14
R MySQL Unbenutzte Tabellen/Spalten herausfinden Datenbankprogrammierung 7
O DefaultTableModel Spalten ausblenden Datenbankprogrammierung 3
T Spalten einer SQL-Anfrage vorhersagen Datenbankprogrammierung 6
N Zwei Spalten und Ihre Werte vergleichen Datenbankprogrammierung 3
H Group By mit mehreren Spalten Datenbankprogrammierung 2
multiholle SQL Querry über mehrere Spalten Datenbankprogrammierung 12
G Spalten definieren Datenbankprogrammierung 5
A MSSQL - Spalten mit der Option: NULL zulassen Datenbankprogrammierung 2
thE_29 ResultSet und doppelte Spalten Datenbankprogrammierung 4
H Individuelle Datenbankfelder/-spalten wie realisieren? Datenbankprogrammierung 3
Y Hibernate - Update bestimmter Spalten Datenbankprogrammierung 2
G Spalten Namen auslesen und Zeilen daten auslesen Datenbankprogrammierung 17
G maximale Länge von Spalten ermitteln Datenbankprogrammierung 3
M Maximum aus verschiedenen Spalten Datenbankprogrammierung 2
J Alle Spalten und Zeilen eines ResultSets ausgeben ? Datenbankprogrammierung 2
R getString() auf double-Spalten(DECIMAL) Nachkommastellen weg Datenbankprogrammierung 2
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
Dimax MySQL 10 höchsten Werte aus einer Tabelle ermitteln Datenbankprogrammierung 30
C PostgreSQL Fremdschlüsseln ermitteln Datenbankprogrammierung 2
I Oracle Wie ermitteln, welche Benutzer-(!)Tabellen in einer DB sind? Datenbankprogrammierung 1
S select: alle ergebnisse ermitteln Datenbankprogrammierung 5
S Nochmals: ID ermitteln nach Insert Datenbankprogrammierung 2
M Spaltennamen einer MS Access Tabelle ermitteln Datenbankprogrammierung 3
foobar Freie ID in Tabelle ermitteln Datenbankprogrammierung 8
G Primary key ID ermitteln? Datenbankprogrammierung 2
W ID des letzten eingefügten Werts ermitteln (Oracle) Datenbankprogrammierung 4
B zuletzt eingefügte id ermitteln Datenbankprogrammierung 8
N Hibernate: min und max(pkid) ermitteln Datenbankprogrammierung 8
P Wirkliche Zeilenanzahl eines ResultSets ermitteln Datenbankprogrammierung 22
M Feldname einer Tabelle ermitteln Datenbankprogrammierung 2
T Aus PLZ Ort ermitteln Datenbankprogrammierung 2
R JDBC-ODBC: Alle ODBC-Datenquellen ermitteln? Datenbankprogrammierung 4
T ResultSet: Spaltennamen ermitteln Datenbankprogrammierung 8
J Spaltennamen ermitteln Datenbankprogrammierung 4
B Zeilenzahl eines ResultSet ermitteln Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben