将整个结果集插入另一个数据库的简便方法是什么?

时间:2017-05-31 19:44:01

标签: java sqlite jdbc

我目前正在编写一个Java程序来维护与两个SQLlite数据库的连接。我需要从一个DB获取一个大的结果并将其插入另一个数据库的表中。

每个数据库都有自己的线程服务请求其数据库。目前,我从DB1的查询中获取结果,并将结果集转换为List<HashMap<String,Object>>,其中列表中的每个项目都是一行,并且hashmap中的每个项目都是列名称和关联数据。每行包含时间戳和值列。我循环遍历List<HashMap<>>并使用以下内容构造DB2的插入查询:

public String insertDataIntoTrend(ResultData a, int configId) {
    String query = "";
    String adder = "";
    if (a.getData().isEmpty() == false) {
        errorLog.info("Start");
        for (HashMap<String, Object> b : a.getData()) {
            adder = adder + "(" + configId + ", " + b.get("timestamp") + ", " + b.get("value") + "),";
        }
        errorLog.info("End");
        // Remove extra comma
        adder = adder.substring(0, adder.length() - 1);

        query = "insert or ignore into TrendData (configId, timestamp, value) VALUES " + adder;
    }
    return query;
} 

a.getData()List<HashMap>。 63000个条目需要9分钟。

有更有效的方法吗?或者是否可以插入整个结果集而无需逐行构建新的插入查询?

TLDR:我试图在两个单独的数据库上执行Insert DB2.table VALUES(Select timestamp,value from DB1.table)。有没有办法轻松地为整个结果集构建插入查询?

0 个答案:

没有答案