2014-11-20 4 views
10

Ich nehme an, dass es einen Weg gibt, dies aus Code zu tun, zumindest einige gute Abhilfe.H2 - Wie schneidet man alle Tabellen ab?

Bitte beachten Sie, dass ich nicht alle Tabellen löschen möchte (ich habe diesen Befehl gesehen), nur um Zeilen von ihnen zu löschen, aber das bestehende Schema und alle Einschränkungen beizubehalten.

Vielleicht kann ich irgendwie die Liste aller Tabellen aus Metadaten erhalten und TRUNCATE-Befehl für jeden separat anwenden? Aber was ist mit ihren Beziehungen und Fremdschlüsseln?

Irgendeine Idee?

Antwort

1

Für jetzt kam ich mit dieser Lösung ... Aber muss noch gründlicher testen.

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'"); 
}