2014-11-20 23 views
10

Zakładam, że jest sposób na zrobienie tego z kodu, przynajmniej kilka dobrych obejść.H2 - Jak obetnąć wszystkie tabele?

Uważaj, że nie chcę usuwać wszystkich tabel (widziałem to polecenie), tylko po to, aby usunąć z nich wiersze, ale aby zachować istniejący schemat i wszystkie ograniczenia.

Może w jakiś sposób mogę uzyskać listę wszystkich tabel z metadanych i zastosować komendę TRUNCATE dla każdego z osobna? Ale co z ich relacjami i kluczami zagranicznymi?

Każdy pomysł?

Odpowiedz

1

Na razie wpadłem na to rozwiązanie ... Ale nadal muszę przetestować je dokładniej.

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'"); 
} 
Powiązane problemy