PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách tìm và xóa một số bảng khỏi Cơ sở dữ liệu PostgreSQL

Điều này sẽ tạo các câu lệnh để loại bỏ các bảng đã nói và không các đối tượng khác phù hợp với mẫu. Cũng không có bảng hệ thống.

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;

Truyền đến regclass tự động thoát và lược đồ đủ điều kiện tên bảng khi cần thiết và an toàn trước SQL injection. Chi tiết:

Đối với nhiều bảng, một câu lệnh tích hợp duy nhất sẽ nhanh hơn:

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;

Kết quả:

DROP TABLE tbl1, tbl2, schema1.tbl3;

Các câu trả lời liên quan:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PGError:ERROR:quan hệ delay_jobs không tồn tại (Postgresql, rails 3.04, delay_job error)

  2. SQL Tìm tất cả con cháu trực tiếp trong một cây

  3. Tại sao di chuyển theo trình tự tạo bảng nhưng mô hình không thể kết nối với cơ sở dữ liệu

  4. Làm cách nào để phân tích cú pháp chuỗi tìm kiếm của người dùng cho truy vấn Postgresql?

  5. Không thể kết nối với máy chủ postgres trong một docker từ một ứng dụng dày đặc