Недавно надо было сконвертировать mysql в h2 базу. Долго думать было некогда, получилась такая функция на джаве:
Код:
private void convertTable(String table) {
try {
JdbcDatabaseConnection mysql = (JdbcDatabaseConnection) PConnection.getInstance().getReadOnlyConnection();
JdbcDatabaseConnection h2 = (JdbcDatabaseConnection) PConnection.getH2Instance().getReadOnlyConnection();
Connection mysqlConn = mysql.getInternalConnection();
Connection h2Conn = h2.getInternalConnection();
Statement mysqlStmt = mysqlConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
Statement h2Stmt = h2Conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet mysqlResult = mysqlStmt.executeQuery("SELECT * FROM " + table);
ResultSet h2Result = h2Stmt.executeQuery("SELECT * FROM " + table);
ResultSetMetaData rsmd1 = mysqlResult.getMetaData();
int columns = rsmd1.getColumnCount();
while (mysqlResult.next()) {
h2Result.moveToInsertRow();
for (int i = 1; i <= columns; i++) {
String name = rsmd1.getColumnName(i);
h2Result.updateObject(name, mysqlResult.getObject(i));
}
h2Result.insertRow();
}
h2Stmt.close();
h2Result.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Ну собсвенно какой драйвер указать, туда и сконвертирует. Для больших таблиц это бы еще в транзакцию обернуть.
Социальные закладки