I have a MySQL database and a H2 database. I have a resultSet from a SELECT to MySQL.
Now I want to insert each row of this resultSet into a H2 db table
I've tried this.
// 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) + ")";
}
}
It is working, but when number of rows increase this is very slow. Is there another way to insert each row into a H2 db table?