Подтвердить что ты не робот

H2 - Как обрезать все таблицы?

Я предполагаю, что есть способ сделать это из кода, по крайней мере, неплохо обходиться.

Пожалуйста, учтите, что я не хочу удалять все таблицы (я видел эту команду), просто удаляя строки из них, но чтобы сохранить существующую схему и все ограничения.

Возможно, я смогу каким-то образом получить список всех таблиц из метаданных и применить команду TRUNCATE для каждого отдельно? Но как насчет их отношений и внешних ключей?

Любая идея?

4b9b3361

Ответ 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'");
}