2014-04-15 12 views

Trả lời

32

Hiện tất cả:

SELECT oid::regclass::text 
FROM pg_class 
WHERE relkind = 'm'; 

Names sẽ được tự động thoát và schema-đủ tiêu chuẩn theo hiện search_path của bạn khi cần thiết trong các diễn viên regclass-text.

Chế độ xem vật lý trong danh mục hệ thống pg_class được xác định theo relkind = 'm'.
Per documentation:

m = materialized view 

Để thả tất cả, bạn có thể tạo ra các kịch bản SQL cần thiết với truy vấn này:

SELECT 'DROP MATERIALIZED VIEW ' || string_agg(oid::regclass::text, ', ') 
FROM pg_class 
WHERE relkind = 'm'; 

Returns:

DROP MATERIALIZED VIEW mv1, some_schema_not_in_search_path.mv2, ... 

Một DROP MATERIALIZED VIEW tuyên bố có thể chăm sóc nhiều quan điểm vật hoá. Bạn có thể cần phải thêm CASCADE vào cuối nếu bạn có chế độ xem lồng nhau.

Kiểm tra tập lệnh DDL kết quả để chắc chắn trước khi thực thi. Bạn có chắc chắn muốn bỏ tất cả tất cả MV từ tất cả các lược đồ trong db? (Hiện tại không có quan điểm trong một cài đặt chuẩn tươi thành hiện thực.)

+0

Có lẽ một lỗi đánh máy trên - trong PG của tôi, thứ 3 niêm yết trên nên bắt đầu: SELECT 'thả cụ thể hóa XEM' ... –

+0

@MichaelTerry: Vâng, tôi đã lang thang ra khỏi chủ đề quan điểm. Cảm ơn, cố định. –

+0

cũng giống như một lưu ý phụ bạn có thể sử dụng lệnh pg quick \ dm để chỉ nhận danh sách các chế độ xem của bạn từ ứng dụng khách cli. – lbrindze

0

này sẽ dễ dàng hơn nếu bạn muốn có được một danh sách đầy đủ các câu lệnh DROP trước mỗi view:

SELECT 'DROP MATERIALIZED VIEW ' || relname || ';' 
FROM pg_class 
WHERE relkind = 'm'; 
0

này một câu trả lời dựa trên câu trả lời từ Erwin Brandstetter. Phiên bản bên dưới thêm một tên lược đồ cụ thể để chỉ truy xuất các khung nhìn vật chất từ ​​một lược đồ đã định nghĩa. Cascasde cũng giảm sự phụ thuộc vào các khung nhìn vật chất hóa từ lược đồ đó. Hãy cẩn thận với điều đó.

SELECT 'DROP MATERIALIZED VIEW <<schema_name>>.' || c.relname::text || ' CASCADE;' AS drop_statements 
FROM pg_class c 
INNER JOIN pg_namespace n ON n.oid = c.relnamespace 
AND c.relkind = 'm' 
AND n.nspname = '<<schema_name>>' 
Các vấn đề liên quan