2012-02-09 10 views
6

हमारे पास एक अर्ध-बड़ा डेटाबेस है जो हमारी व्यक्तिगत देव मशीनों पर स्थानीय रूप से आयात करने में लंबा समय लगता है। मैं सोच रहा था कि क्या कोई उपकरण जो डेटाबेस से कनेक्ट हो सकता है, थोड़ा विश्लेषण करें और पैरामीटर में पारित होने के माध्यम से सभी संबंधों को रखते हुए डेटाबेस का नमूना खींचें। कुछ ऐसा है जैसे pg_sample --rough_size 1000 --dbhost mydbhost --dbuname uname --dbpword pword यह एक डंप बनाता है जिसे मैं परीक्षण और विकास के लिए अपने डेटाबेस में आयात कर सकता हूं। लेकिन ऐसा करने में 45 मिनट लगेंगे नहीं।अपने डेटाबेस का नमूना खींचना - पोस्टग्रेस्क्ल

धन्यवाद

+0

रेफरेंसियल अखंडता को संरक्षित करते समय यह एक कठिन कार्य होगा। 1: n संबंधों के बारे में सोचें जहां तालिका 'ए' में एक पंक्ति तालिका' बी' में 5000 पंक्तियों का संदर्भ देती है ... –

+0

मैं सहमत हूं, यह होगा। यही कारण है कि मैं उम्मीद कर रहा था कि यह पहले से ही लिखा गया था। ;) हालांकि यदि आप इसे शुरू करने के लिए कुछ आधार वर्ग भी प्रदान कर सकते हैं, और उस तालिका में सबकुछ ले सकते हैं जिसमें आपके rough_size मानों से रिकॉर्ड गिनती कम है। – Sector7B

+0

मुझे ऐसे उपकरण से प्यार होगा। मैं सपना देख सकता हूं ... –

उत्तर

2

मैं सुझाव है कि आप की जांच pg_dump --format=custom और pg_restore -j 12custom प्रारूप समांतर पुनर्स्थापना की अनुमति देता है (और वांछित होने पर कच्चे एसक्यूएल में डाला जा सकता है, इसलिए आप यहां कोई कार्यक्षमता खो नहीं रहे हैं)। -j पैरामीटर pg_restore पर समानांतर में पुनर्स्थापना चलाने का कारण बनता है। यह एक पर्याप्त गति प्रदान कर सकते हैं। विशेष रूप से यदि आपने अपने रखरखाव_work_mem को अच्छे और बड़े पैमाने पर क्रैंक किया है।

यह ऊपर की ओर इरविन द्वारा उल्लिखित कारणों के लिए सीधे पूछे जाने वाले समस्या को हल नहीं करेगा, और क्योंकि इसके बारे में ज्ञान के स्तर की आवश्यकता होती है जो प्रतिनिधित्व करने के लिए महत्वपूर्ण है और यह नहीं है कि यह केवल स्कीमा में नहीं है । यह ऐसा कुछ है जो डेवलपर का समय लेता है और आमतौर पर स्कीमा को पहले स्थान पर बनाया जा रहा है, उसी समय किया जाना चाहिए।

+0

thnk आप, मैं जांच करूँगा और कुछ डेटा के साथ वापस आऊंगा। – Sector7B

4

मैं इस तरह के एक उपकरण लिखा है: https://github.com/mla/pg_sample

README से:

pg_sample एक बड़ा PostgreSQL डेटाबेस से एक छोटी सी, नमूना डेटासेट के निर्यात के लिए एक उपयोगिता है। आउटपुट और कमांड लाइन विकल्प निकटता से pg_dump बैकअप उपयोगिता जैसा दिखता है (हालांकि केवल सादे-पाठ प्रारूप समर्थित है)।

उत्पादित नमूना डेटाबेस में मूल से सभी तालिकाएं शामिल हैं, संदर्भित अखंडता को बनाए रखती है, और परिपत्र निर्भरताओं का समर्थन करती है।

संबंधित मुद्दे