У меня есть база данных MySQL и база данных H2.У меня есть результирующий набор из SELECT to MySQL.
Теперь я хочу вставить каждую строку этого результирующего набора в таблицу H2 db
Я пробовал это.
// Return records filtered
ResultSet filter = stmt.executeQuery(query);
// Create table filterName in H2
ResultSetMetaData rsMetaData = filter.getMetaData();
query = "CREATE TABLE " + filterName + "(";
ArrayList<String> cols = new ArrayList<String>();
for(int i = 1; i < rsMetaData.getColumnCount(); i++) {
cols.add(rsMetaData.getColumnName(i));
query = query + rsMetaData.getColumnLabel(i) + " " +
rsMetaData.getColumnTypeName(i) + "(" + rsMetaData.getColumnDisplaySize(i) + ") NOT NULL, ";
}
query = query + ");";
String queryDel = "DROP TABLE IF EXISTS " + filterName + ";";
stmtH2.executeUpdate(queryDel);
stmtH2.executeUpdate(query);
query = "INSERT INTO " + filterName + " VALUES (";
// Insert into H2 table
while(filter.next() ) {
for(int i = 0; i < cols.size(); i++) {
if(i != cols.size()-1)
query = query + filter.getString(i+1) + ", ";
else
query = query + filter.getString(i+1) + ")";
}
}
Это работает, но когда количество строк увеличивается, это очень медленно.Есть ли другой способ вставить каждую строку в таблицу H2 db?