前言
一開始為了收集、分析資料,筆者把所有的記錄都保存起來。隨著專案的進行我們只需要保留特定條件的記錄。想說就趁著這次順手記錄起來吧。
主要內容
登入資料庫
1
| psql -h myhost -d mydb -U myuser [-W]
|
列出所有資料表
or
1
2
3
4
5
| SELECT *
FROM pg_catalog.pg_tables
WHERE 1 = 1 AND
schemaname != 'pg_catalog' AND
schemaname != 'information_schema';
|
透過建立臨時表來刪除大量資料
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| BEGIN;
SET LOCAL temp_buffers = '1000MB';
-- copy surviving rows into temporary table
CREATE TEMP TABLE tmp AS
SELECT u.*
FROM users u
WHERE u.id IS NULL;
-- empty table
TRUNCATE users;
-- insert back surviving rows
INSERT INTO users TABLE tmp;
COMMIT;
|
如果途中有出現錯誤,則要使用 END;
進行退回 (Rollback)。
參考連結