2010-01-24 62 views
3

可能重複:
How to empty a SQL database?PostgreSQL的:清除所有表

什麼是刪除從數據庫中的所有表中的所有記錄,假如他們沒有太多數據的最快方法(可能是在一些表中有幾條記錄,但沒有更多)?

我相信從結構轉儲重建數據庫是更長的變體。

+1

爲什麼要從結構轉儲中恢復「更長的變體」?什麼意思? – 2010-01-24 12:38:36

回答

5

TRUNCATE表1,名稱2,... CASCADE

TRUNCATE快速地從一組表中刪除所有行。它與每個表上的非限定DELETE具有相同的效果,但由於它實際上並不掃描表,所以速度更快。這在大型表格上最有用。

如果您有很多表可能需要查詢表的列表並動態構造截斷查詢,但對於少數表可以只需手動輸入名稱。

有關選擇所有表並動態運行查詢的信息,請參見this post。給出的例子是grantall,但這個想法是相同的。

+0

當心DELETE可能比TRUNCATE更快。請參閱http://stackoverflow.com/questions/11419536/postgresql-truncation-speed – 2013-11-15 14:16:43