H2 - Как обрезать все таблицы?
Я предполагаю, что есть способ сделать это из кода, по крайней мере, неплохо обходиться.
Пожалуйста, учтите, что я не хочу удалять все таблицы (я видел эту команду), просто удаляя строки из них, но чтобы сохранить существующую схему и все ограничения.
Возможно, я смогу каким-то образом получить список всех таблиц из метаданных и применить команду TRUNCATE для каждого отдельно? Но как насчет их отношений и внешних ключей?
Любая идея?
Ответы
Ответ 1
Вы можете сделать это следующим образом:
Ответ 2
В настоящее время я придумал это решение... Но все же нужно проверить его более тщательно.
private void truncateDatabase () throws SQLException {
String tempDir = System.getProperty("java.io.tmpdir");
File tempRestoreFile = new File(tempDir + File.separator + "tempRestore");
Connection connection = dataSource.getConnection();
Statement statement = connection.createStatement();
statement.execute("SCRIPT SIMPLE NODATA DROP TO '" + tempRestoreFile + "' CHARSET 'UTF-8'");
statement.execute("RUNSCRIPT FROM '" + tempRestoreFile.getAbsolutePath() + "' CHARSET 'UTF-8'");
}