前言

一開始為了收集、分析資料,筆者把所有的記錄都保存起來。隨著專案的進行我們只需要保留特定條件的記錄。想說就趁著這次順手記錄起來吧。

主要內容

登入資料庫

1psql -h myhost -d mydb -U myuser [-W]

列出所有資料表

1postgres=# \dt

or

1SELECT *
2FROM pg_catalog.pg_tables
3WHERE 1 = 1 AND
4    schemaname != 'pg_catalog' AND 
5    schemaname != 'information_schema';

透過建立臨時表來刪除大量資料

 1BEGIN;
 2
 3SET LOCAL temp_buffers = '1000MB';
 4
 5-- copy surviving rows into temporary table
 6CREATE TEMP TABLE tmp AS
 7SELECT u.*
 8FROM users u
 9WHERE u.id IS NULL;
10
11-- empty table
12TRUNCATE users;
13
14-- insert back surviving rows
15INSERT INTO users TABLE tmp;
16
17COMMIT;
如果途中有出現錯誤,則要使用 END; 進行退回 (Rollback)。

參考連結