MySQL डंप से एक ही टेबल निकालें

आपके पास 127 टेबल वाला 7 GB का डंप है, लेकिन स्थानीय रूप से आपको उनमें से केवल तीन चाहिए — users, orders, products। यहाँ जानें कि सामान्य sed/grep ट्रिक्स क्यों टूट जाते हैं, और आप जो टेबल चाहते हैं उन्हें (उनकी फ़ॉरेन की के साथ) कुछ ही क्लिक में कैसे खींचें।

हर काम के लिए पूरे डेटाबेस की ज़रूरत नहीं होती। जब आप स्थानीय रूप से कोई फ़ीचर बना रहे होते हैं, तो आप शायद ही कभी चाहते हैं कि एक पूरा प्रोडक्शन डंप आपकी डिस्क भर दे और इम्पोर्ट होने में एक घंटा ले। आप बस उन गिनी-चुनी टेबलों को चाहते हैं जिन्हें फ़ीचर वास्तव में छूता है।

यही बात तब भी सही है जब आप किसी एक टेबल को डीबग कर रहे हों — orders में किसी डेटा समस्या को दोहराने के लिए बाकी 126 टेबलों की ज़रूरत नहीं होती — या आंशिक माइग्रेशन कर रहे हों, जहाँ केवल कुछ ही टेबल किसी नई सेवा में जाती हैं। इन सभी मामलों में सवाल एक ही है: मैं एक विशाल डंप में से बस ये टेबल साफ़-सुथरे और तेज़ी से कैसे निकालूँ?

sed/grep का तरीका और यह क्यों टूटता है

क्लासिक जवाब यह है कि फ़ाइल को sed से उन सेक्शन हेडर के बीच काटा जाए जो mysqldump प्रत्येक टेबल के लिए लिखता है:

# mysqldump फ़ाइल से users टेबल निकालें
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql

यह चतुराई भरा दिखता है, और एक छोटे, साफ़-सुथरे डंप पर शायद एक बार काम भी कर जाए। एक वास्तविक 7 GB फ़ाइल पर यह कई सूक्ष्म तरीकों से बिखर जाता है:

आप grep पर sed पर awk ढेर लगाते रहते हैं, सबसेट पर परीक्षण करते हैं, और फिर भी परिणाम पर भरोसा नहीं कर पाते। इससे बेहतर एक तरीका है।

DumpCleaner के साथ टेबल निकालें

DumpCleaner डंप को सही ढंग से पार्स करता है — यह स्टेटमेंट सीमाओं, मल्टी-लाइन INSERT, बैकटिक और कमेंट को समझता है — इसलिए यह हमेशा सही लाइनों पर काटता है। आपकी ज़रूरत की टेबल निकालने में चार चरण लगते हैं:

  1. अपना .sql डंप अंदर खींचें। DumpCleaner फ़ाइल को स्ट्रीम करता है, इसलिए 7 GB का डंप पूरी चीज़ लोड करने के बजाय स्थिर मेमोरी के साथ खुलता है।
  2. स्वतः-पहचानी गई टेबल सूची पढ़ें। हर टेबल को पार्स करके उसकी रो संख्या और आकार के साथ सूचीबद्ध किया जाता है — यह देखने के लिए लाखों लाइनों में स्क्रॉल करने की ज़रूरत नहीं कि वहाँ क्या है।
  3. अपनी मनचाही टेबल चुनें। users, orders और products पर टिक करें, या *_logs जैसा रेगेक्स / एक्सक्लूड पैटर्न टाइप करें ताकि पूरे समूह एक झटके में हट जाएँ।
  4. फ़ॉरेन की पैरेंट शामिल करें और एक्सपोर्ट करें। वैकल्पिक रूप से संदर्भित पैरेंट टेबल को स्वचालित रूप से खींच लें, फिर एक साफ़, इम्पोर्ट-योग्य फ़ाइल एक्सपोर्ट करें।

कुछ चीज़ें इसे शेल टूल की तुलना में बहुत कम झंझट भरा बनाती हैं:

बस वे टेबल जो आपको चाहिए — और कुछ नहीं

DumpCleaner किसी भी आकार के डंप से विशिष्ट टेबल निकालता है — स्ट्रीमिंग के साथ, स्थिर मेमोरी में, और आपके लिए हल की गई फ़ॉरेन की के साथ। नेटिव macOS और iPadOS ऐप, एकमुश्त खरीद।

App Store पर डाउनलोड करें

अक्सर पूछे जाने वाले प्रश्न

क्या मैं एक बार में कई टेबल निकाल सकता हूँ?

हाँ। जितनी चाहें उतनी टेबल पर टिक करें — users, orders और products एक साथ — और DumpCleaner उन सभी को एक ही पास में एक अकेली फ़ाइल में लिख देता है।

क्या यह फ़ॉरेन की डिपेंडेंसी बनाए रखता है?

वैकल्पिक रूप से, हाँ। फ़ॉरेन की डिपेंडेंसी शामिल करें चालू करें और आपके चयन द्वारा संदर्भित कोई भी पैरेंट टेबल स्वचालित रूप से खींच ली जाती है, ताकि निकाली गई फ़ाइल बिना कंस्ट्रेंट त्रुटियों के इम्पोर्ट हो।

क्या मैं पैटर्न के अनुसार टेबल को बाहर रख सकता हूँ?

हाँ। *_logs या *_sessions जैसे एक्सक्लूड पैटर्न, या एक रेगुलर एक्सप्रेशन का उपयोग करें, ताकि एक-एक करके अनटिक करने के बजाय टेबलों के पूरे समूह हटा दें।

क्या यह PostgreSQL के साथ काम करता है?

हाँ। DumpCleaner MySQL, MariaDB और PostgreSQL (pg_dump) डंप पढ़ता है, और टेबल निकालते समय public.users जैसे स्कीमा-योग्य नामों को संभालता है।

sed और grep से जूझना बंद करें

खींचें, अपनी टेबल चुनें, एक्सपोर्ट करें। DumpCleaner किसी भी डंप में से आपकी ज़रूरत की टेबल — उनकी फ़ॉरेन की के साथ — बिल्कुल सही निकालता है।

App Store पर डाउनलोड करें