2012-02-09 26 views
6

chúng tôi có một cơ sở dữ liệu bán lớn mất nhiều thời gian để nhập cục bộ trên các máy tính cá nhân của chúng tôi. Tôi đã tự hỏi nếu có bất kỳ công cụ nào có thể kết nối với một cơ sở dữ liệu, hãy phân tích một chút và lấy một mẫu của cơ sở dữ liệu trong khi vẫn giữ tất cả các mối quan hệ thông qua một tham số được truyền vào. Một cái gì đó như pg_sample --rough_size 1000 --dbhost mydbhost --dbuname uname --dbpword pword điều này tạo ra một bãi chứa mà tôi có thể nhập vào cơ sở dữ liệu của tôi để thử nghiệm và phát triển. Nhưng sẽ không mất 45 phút để làm điều đó.Làm hài lòng một mẫu cơ sở dữ liệu của bạn - Postgresql

Cảm ơn

+0

Đó sẽ là một nhiệm vụ khó khăn trong khi vẫn giữ nguyên tính toàn vẹn tham chiếu. Hãy suy nghĩ về mối quan hệ 1: n trong đó một hàng trong bảng 'a' tham chiếu 5000 hàng trong bảng' b' ... –

+0

tôi đồng ý, nó sẽ là. đó là lý do tại sao tôi đã hy vọng nó đã được viết rồi. ;) Tuy nhiên, nếu bạn cũng có thể cung cấp cho nó một số lớp cơ sở để bắt đầu và lấy mọi thứ trong bảng có số bản ghi ít hơn giá trị thô của bạn. – Sector7B

+0

Tôi rất thích một công cụ như vậy. Tôi có thể ước mơ ... –

Trả lời

2

Tôi đề nghị bạn điều tra pg_dump --format=custompg_restore -j 12. Định dạng custom cho phép khôi phục song song (và có thể được chuyển sang SQL thô nếu muốn, vì vậy bạn không mất bất kỳ chức năng nào ở đây). Thông số -j thành pg_restore khiến cho nó chạy song song khôi phục. Điều này có thể cung cấp một tốc độ đáng kể. Đặc biệt là nếu bạn đã sửa chữa maintenance_work_mem của bạn lên tốt đẹp và lớn.

Nó sẽ không giải quyết được vấn đề bạn đã hỏi trực tiếp vì những lý do được nêu bởi Erwin ở trên, và bởi vì nó đòi hỏi một mức độ kiến ​​thức về những gì là quan trọng để đại diện và điều đó không đơn giản là không có trong lược đồ . Đó là một cái gì đó mà chiếm thời gian phát triển và thường nên được thực hiện cùng một lúc lược đồ đang được xây dựng ở nơi đầu tiên.

+0

thnk bạn, tôi sẽ điều tra và quay lại với một số dữ liệu. – Sector7B

4

Tôi đã viết một công cụ như vậy: https://github.com/mla/pg_sample

Từ README:

pg_sample là một tiện ích cho xuất khẩu một nhỏ, mẫu số liệu từ một cơ sở dữ liệu lớn hơn PostgreSQL. Các tùy chọn đầu ra và dòng lệnh gần giống với tiện ích sao lưu pg_dump (mặc dù chỉ hỗ trợ định dạng thuần văn bản ).

Cơ sở dữ liệu mẫu được tạo bao gồm tất cả các bảng từ bản gốc, duy trì tính toàn vẹn tham chiếu và hỗ trợ phụ thuộc vòng tròn.