PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara menemukan dan menghapus beberapa tabel dari Database PostgreSQL

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:

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:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pencarian Fuzzy ActiveRecord

  2. menggunakan COPY FROM di aplikasi Rails di Heroku dengan backend Postgresql

  3. Melewati variabel C ke perintah SQL

  4. Array elemen PostgreSQL yang masing-masing merupakan kunci asing

  5. Cara mendapatkan ID kembali di JPA setelah penyisipan kueri asli