Ini akan membuat pernyataan untuk menghapus tabel tersebut dan tidak objek lain yang cocok dengan pola. Juga tidak ada tabel sistem.
SELECT 'DROP TABLE ' || c.oid::regclass || ';'
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace -- to restrict to a schema
WHERE c.relkind = 'r' -- only tables
AND c.relname ILIKE '%gtab%' -- pattern for table names
AND n.nspname = 'public' -- restrict to a schema
ORDER BY 1;
Cast ke regclass
otomatis lolos dan nama tabel memenuhi syarat skema sesuai kebutuhan dan aman terhadap injeksi SQL. Detail:
- Nama tabel sebagai Parameter fungsi PostgreSQL
- Tentukan nama tabel dan kolom sebagai argumen dalam fungsi plpgsql?
Untuk banyak tabel, satu pernyataan terintegrasi akan lebih cepat:
SELECT 'DROP TABLE ' || string_agg(c.oid::regclass::text, ', ') || ';'
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind = 'r'
AND c.relname ILIKE '%gtab%'
AND n.nspname = 'public'
ORDER BY 1;
Hasil:
DROP TABLE tbl1, tbl2, schema1.tbl3;
Jawaban terkait:
- Apakah ada perintah postgres untuk membuat daftar/menjatuhkan semua tampilan yang terwujud?
- Bagaimana cara menghapus urutan yang tidak digunakan?