簡體   English   中英

從Oracle復制到Java中的SQLite

[英]Copy from Oracle to SQLite in Java

我被要求實現一個代碼,以將一些信息從Oracle數據庫復制到SQLite數據庫。 我從Oracle獲得了ResultSet並開始在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);

我認為您可以選擇“一次性”或偶爾進行表格復制。

您可能還需要考慮創建一個鏈接表,並進行“選擇為”:

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

PS:正如文森特·馬爾格拉特(Vincent Malgrat)建議的那樣-將“准備”也移到循環外:)

通常,批處理在插入數據庫(PreparedStatement.addBatch())時可提高性能。

在這里看看http://www.zentus.com/sqlitejdbc/usage.html

我從來沒有使用過它,但是當在Oracle中插入許多行時,我要做的第一件事是:

  1. 設置自動提交=否
  2. 使用數組/批處理插入

所以我用谷歌搜索了sqlite批處理插入,並且上面的頁面出現了,表明有可能。 我很想知道它是否可以使您更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM