Копировать из Oracle в SQLite на Java - PullRequest
0 голосов
/ 22 марта 2012

Меня попросили реализовать код для копирования некоторой информации из БД Oracle в БД SQLite. Я получил ResultSet от Oracle и начал вставлять в SQLite, но мне кажется, что это действительно медленно. Есть ли лучший способ или вы можете предложить лучший способ достичь этого?

Мой код выглядит следующим образом:

    OracleDB oracleDB = new OracleDB();
    SQLiteDB sqliteDB = new SQLiteDB();


    oracleConnection = oracleDB.connect();
    sqliteConnection = sqliteDB.connect();
    {
        Statement s = null;
        PreparedStatement ps = null;
        try {
            s = sqliteConnection.createStatement();
            s.executeUpdate("CREATE TABLE IF NOT EXISTS test_table (field1, field2)");

            ps = oracleConnection.prepareStatement("SELECT * FROM temp_desarrollo");
            ResultSet rs = ps.executeQuery();

            while (rs.next()) {
                ps = sqliteConnection.prepareStatement("INSERT INTO test_table VALUES (?, ?)");
                //SET PARAMETERS
                ps.setString(1, rs.getString(1));
                ps.setString(2, rs.getString(2));
                ps.executeUpdate();
            }

        } catch (SQLException ex) {
            Logger.getLogger(OracleToSQLite.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    oracleDB.disconnect(oracleConnection);
    sqliteDB.disconnect(sqliteConnection);

Ответы [ 3 ]

1 голос
/ 22 марта 2012

Как правило, пакетирование повышает производительность при вставке в БД (PreparedStatement.addBatch ()).

1 голос
/ 22 марта 2012

Посмотрите здесь http://www.zentus.com/sqlitejdbc/usage.html

Я никогда не использовал это, но при вставке многих строк в Oracle, первое, что я бы сделал:

  1. Установить автокоммит = false
  2. Использовать массив / пакетные вставки

Так что я гуглил пакетную вставку sqlite, и показанная выше страница показала, что это возможно. Мне было бы интересно узнать, поможет ли это вам быстрее.

1 голос
/ 22 марта 2012

Я думаю, что то, что у вас есть, возможно, подходит для разовых или случайных копий таблицы.

Возможно, вы захотите создать связанную таблицу и выполнить «выбор в»:

https://forums.oracle.com/forums/thread.jspa?threadID=846516

PS: Как предположил Винсент Малграт, тоже выведите «готовить» из цикла:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...