2011-12-12 26 views

Trả lời

4

Nếu bạn có mỗi cái nhìn đầu bằng tiền tố nhất định, bạn có thể sử dụng lệnh này:

pg_dump -s -t 'prefix*' dbname > db.dump 

hoặc bạn có thể sử dụng -t chuyển càng nhiều càng tốt với những cái tên quan điểm ... Xem manpage cho pg_dump, ở cuối dòng là các ví dụ ...

+4

Lưu ý rằng thao tác này sẽ xuất các chế độ xem chứ không phải dữ liệu mà lượt xem quay lại. Điều này có lẽ là hiển nhiên đối với hầu hết, nhưng không phải lúc đầu tôi. Để xuất dữ liệu được trả về bởi một chế độ xem, hãy xem http://stackoverflow.com/questions/1745105/postgres-dump-of-only-parts-of-tables-for-a-dev-snapshot –

+0

Có thể bạn sẽ thích bỏ '-s' và vẫn sử dụng' pg_dump', thay vì đi xuống tuyến đường 'COPY' được thảo luận về câu hỏi đó – kez

15

Không có cờ trực tiếp để làm điều này, nhưng sử dụng yêu thích của chúng tôi truy vấn-the-schema-to-tạo-một-lệnh kỹ thuật:

select string_agg('-t ' || quote_ident(nspname) || '.' || quote_ident(relname), ' ') 
    from pg_class join pg_namespace on pg_namespace.oid = pg_class.relnamespace 
    where relkind = 'v' and not (nspname ~ '^pg_' or nspname = 'information_schema'); 

này sẽ tạo ra một chuỗi có thể được sử dụng với một pg_dump lệnh, ví dụ:

-t media.duplicated_component -t adv.advert_view_distribution 

Mà bạn sau đó có thể ghép thành một dòng lệnh trực tiếp:

pg_dump $(psql -c "select string_agg(...etc...)" db) db 
+0

Nếu bạn muốn thêm chế độ xem vật hoá, hãy sử dụng 'relkind in ('v', 'm')'. – Nobu

+0

Stil hoạt động tốt với phiên bản PostgreSQL 9.4. – mivk

Các vấn đề liên quan