2014-10-28 41 views
2

我正在使用Spring-data-jpaCrudRepository將數據保存在postgres db中。如何使用Spring快速刪除數據庫表內容?

我每天都要更新完整的數據庫內容,這意味着首先刪除特定表中的所有數據。

存儲庫提供了一種方法dao.deleteAll(),但是這個方法持續很長時間,因爲我有大約500k條目。

我該如何改進?

回答

3

您可以在實體管理器執行原生SQL查詢,並截斷數據庫

String sql = "TRUNCATE tbl_name;"; 
entityManager.createNativeQuery(sql).executeUpdate(); 
1

TRUNCATE命令快得多大表上,因爲它只是核武器的文件,在文件系統層面,而DELETE馬克每個記錄爲免費,而不會降低文件大小,任何觸發他們正在運行的定義。

+0

我怎麼能使用'truncate'與Hibernate/HQL,如果可能的話? – membersound 2014-10-28 10:25:35

+0

@membersound看到這個答案:http://stackoverflow.com/a/1262767/3304426 – Patrick 2014-10-28 10:42:12

+0

請注意,即使實際上沒有實際的數據行,如果定義了外鍵,在某些數據庫中也不能使用truncate。 – Thierry 2014-10-28 14:08:19