PostgreSQL CLOB Transport

capri

Mitglied
Hallo Forum,

ich bin immer noch bei dem Datentransport aus Postgre-DB in Oracle-DB und habe Probleme, eine Tabelle zu transportieren.

In der Tabelle in Postgre ist eine Spalte mit Datentype "TEXT", was ich in Oracle in "CLOB" umwandele.

Die Strings und Integer konnte ich in Java mit getString() bzw getInt() auslesen und entsprechend mit setString() einsetzten.

Frage: Wie gehe ich bei TEXT bzw CLOB vor? Hat jemand einen Hinweis für mich?

Schönen Dank im Voraus!
capri
 

capri

Mitglied
Hallo httpdigest,

vielen Dank für deine Antwort und für die Links. Ich werde leider nicht ganz schlau daraus.

Muss ich mit dem ausgelesenen CLOB etwas machen? Oder kann ich ihn direkt in Oracle einfügen?
Code:
String selectQueryPersonInfo = "...";
String insertQueryPersonInfo = "INSERT INTO PERSON_INFO (ID, INFO) VALUES (?, ?)";
try (PreparedStatement pstmt = con2.prepareStatement(insertQueryPersonInfo)) {
      try (Statement stmt = con1.createStatement()) {
            try (ResultSet rs = stmt.executeQuery(selectQueryPersonInfo)) {
...            
Clob myClob = rs.getClob(2);
pstmt.setClob(2, myClob);
pstmt.addBatch();
...
pstmt.executeBatch();
         }
     }
}

Hier kriege ich einen Fehler: org.postgresql.util.PSQLException: Unzulässiger Wert für den Typ long :...

Muss ich CLOB erst in String umwandeln? Oder wie gehe ich vor?

Danke im Voraus!
capri
 

httpdigest

Top Contributor
In PostgreSQL sind TEXT Spalten keine CLOBs, sondern einfach nur Text und du solltest dafür ResultSet.getString() nehmen.
Sag mal, findest du es wirklich noch eine gute Idee, ein PostgreSQL -> Oracle Migrationstool selber zu bauen?
 

capri

Mitglied
Hallo httpdigest,

vielen Dank für die schnelle und sehr hilfreiche Antwort!

Ich habe es jetzt so gemacht:
Code:
String wert = rs.getString(4);
if (wert == null) {
   pstmt.setNull(4, java.sql.Types.CLOB);
 } else {
   Reader rdr=new StringReader(wert);
   int size = wert.length();
   pstmt.setCharacterStream(4,rdr, size);
}

Es scheint auch zu funktionieren, aber ich bin mir nicht sicher, ob es nur mit meinen Beispielen funktioniert.
Ist mein Code korrekt?

Schema- und Datentransport aus PostgreSQL in Oracle ist Teil der Aufgabe, also ich kann mir das nicht aussuchen.

Noch mal Danke!
capri
 

Ähnliche Java Themen

Neue Themen


Oben