Julia: DataTransport: PostgreSQL -> Oracle

Hallo Forum,

ich möchte bestimmte Daten (nicht komplette DB) aus PostgreSQL auslesen und in Oracle einfügen.

Ich möchte hierfür Prapaired-Statements benutzen. Leider funktioniert es nicht wie es soll: Wenn ich mir die Query ausgeben lasse und in Oracle manuell ausführe, werden die Datensätze hinzugefügt. Über mein Java-Programm mit Prapaired-Statements werden keine Datensätze transportiert.

Hier ist mein Versuch:



public void exportData(Event event) throws SQLException {
        String selectQueryTitle = "SELECT t.* FROM title t JOIN kind_type kt ON t.kind_id = kt.id WHERE kt.kind IN (" + selectTitle + ");"; // selectTitle ist bekannt an der Stelle

        String insertQueryTitle = "INSERT INTO TITLE(ID, TITLE, IMDB_INDEX, KIND_ID, PRODUCTION_YEAR, IMDB_ID, PHONETIC_CODE, EPISODE_OF_ID, SEASON_NR, EPISODE_NR, SERIES_YEARS, MD5SUM) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);";
        
        con2.setAutoCommit(false);
        try (PreparedStatement pstmt = con2.prepareStatement(insertQueryTitle)) {
            try (Statement stmt = con1.createStatement()) {
                try (ResultSet rs = stmt.executeQuery(selectQueryTitle)) {
                   int chunk = 0;
                   while (rs.next()) {
                        String myQuery = "INSERT INTO TITLE(ID, TITLE, IMDB_INDEX, KIND_ID,   PRODUCTION_YEAR, IMDB_ID, PHONETIC_CODE, EPISODE_OF_ID, SEASON_NR, EPISODE_NR, SERIES_YEARS, MD5SUM) VALUES (";

                        String wert = Integer.toString(rs.getInt(1));
                        if (wert.equals("0")) {
                            wert = "NULL";
                        }
                        myQuery += wert;
                        pstmt.setString(1, wert);

                        wert = rs.getString(2);
                        if (wert == null) {
                            pstmt.setString(2, wert);
                            myQuery += ", " + wert;
                        } else {
                            pstmt.setString(2, "'" + wert + "'");
                            myQuery += ", '" + wert + "'";
                        }

                        wert = rs.getString(3);
                        if (wert == null) {
                            pstmt.setString(3, wert);
                            myQuery += ", " + wert;
                        } else {
                            pstmt.setString(3, "'" + wert + "'");
                            myQuery += ", '" + wert + "'";
                        }

                        wert = Integer.toString(rs.getInt(4));
                        if (wert.equals("0")) {
                            wert = "NULL";
                        }
                        myQuery += ", " + wert;
                        pstmt.setString(4, wert);

                        wert = Integer.toString(rs.getInt(5));
                        if (wert.equals("0")) {
                            wert = "NULL";
                        }
                        myQuery += ", " + wert;
                        pstmt.setString(5, wert);

                        wert = Integer.toString(rs.getInt(6));
                        if (wert.equals("0")) {
                            wert = "NULL";
                        }
                        myQuery += ", " + wert;
                        pstmt.setString(6, wert);

                         wert = rs.getString(7);
                        if (wert == null) {
                            pstmt.setString(7, wert);
                            myQuery += ", " + wert;
                        } else {
                            pstmt.setString(7, "'" + wert + "'");
                            myQuery += ", '" + wert + "'";
                        }

                        wert = Integer.toString(rs.getInt(8));
                        if (wert.equals("0")) {
                            wert = "NULL";
                        }
                        myQuery += ", " + wert;
                        pstmt.setString(8, wert);

                        wert = Integer.toString(rs.getInt(9));
                        if (wert.equals("0")) {
                            wert = "NULL";
                        }
                        myQuery += ", " + wert;
                        pstmt.setString(9, wert);

                        wert = Integer.toString(rs.getInt(10));
                        if (wert.equals("0")) {
                            wert = "NULL";
                        }
                        myQuery += ", " + wert;
                        pstmt.setString(10, wert);

                         wert = rs.getString(11);
                        if (wert == null) {
                            pstmt.setString(11, wert);
                            myQuery += ", " + wert;
                        } else {
                            pstmt.setString(11, "'" + wert + "'");
                            myQuery += ", '" + wert + "'";
                        }
                        
                        wert = rs.getString(12);
                        if (wert == null) {
                            pstmt.setString(12, wert);
                            myQuery += ", " + wert;
                        } else {
                            pstmt.setString(12, "'" + wert + "'");
                            myQuery += ", '" + wert + "')";
                        }

                        System.out.println(myQuery);
                        pstmt.executeBatch();
                    }
                }
                con2.commit();
            }
        }
    }

In der Konsole kriege ich folgende Queries, die (wie gesagt) in Oracle ausführbar sind, aber als prepaired Statement nicht ausgeführt / nicht eingetragen werden.

INSERT INTO TITLE(ID, TITLE, IMDB_INDEX, KIND_ID, PRODUCTION_YEAR, IMDB_ID, PHONETIC_CODE, EPISODE_OF_ID, SEASON_NR, EPISODE_NR, SERIES_YEARS, MD5SUM) VALUES (2247217, 'Incursion', null, 3, 2017, NULL, 'I5262', NULL, NULL, NULL, null, '0c7e272b36c323afe2ac20c13dff854f');

INSERT INTO TITLE(ID, TITLE, IMDB_INDEX, KIND_ID, PRODUCTION_YEAR, IMDB_ID, PHONETIC_CODE, EPISODE_OF_ID, SEASON_NR, EPISODE_NR, SERIES_YEARS, MD5SUM) VALUES (2776338, 'Un asunto de miedo...', null, 3, 2017, NULL, 'A2535', NULL, NULL, NULL, null, 'ee3aef887cfaaefcb075bb3ce9da8b8f');


Hat jemand vielleicht einen Tipp für mich?

Schönen Dank im Voraus!

Julia

  1. Hallo Forum,

    ich habe die Fehler inzwischen gefunden.

    Gruß, Julia

    1. Hallo Julia.

      ich habe die Fehler inzwischen gefunden.

      Bitte die Lösung nicht verraten. Nicht, dass das noch einmal jemandem hilft …

      MfG, at