SQL डंप से केवल स्कीमा (संरचना) एक्सपोर्ट करें

आपके पास डिस्क पर एक पूरा डंप है, लेकिन आप केवल संरचना चाहते हैं — CREATE TABLE, इंडेक्स, फ़ॉरेन की — बिना 8.9 करोड़ रो वाली लॉग टेबलों के। या इसका उल्टा: केवल डेटा, कोई CREATE स्टेटमेंट नहीं। यहाँ जानें कि सामान्य डंप फ़्लैग किसी मौजूदा फ़ाइल की मदद क्यों नहीं करते, और एक क्लिक में संरचना को डेटा से कैसे अलग करें।

तीन स्थितियाँ बार-बार सामने आती हैं:

mysqldump --no-data क्यों पर्याप्त नहीं है

क्लासिक सलाह है mysqldump --no-data (केवल संरचना) या mysqldump --no-create-info (केवल डेटा)। दोनों एक्सपोर्ट फ़्लैग हैं: वे बदलते हैं कि किसी चालू डेटाबेस से एक नया डंप क्या समाहित करता है। जो डंप आपके पास पहले से ही डिस्क पर एक .sql फ़ाइल के रूप में पड़ा है, उसके लिए वे कुछ नहीं करते।

व्यवहार में फ़ाइल अक्सर किसी और से आती है, या किसी बैकअप जॉब से, या किसी ऐसे सर्वर से जिस तक अब आपकी लाइव पहुँच नहीं है। आप किसी ऐसे डेटाबेस के विरुद्ध mysqldump दोबारा नहीं चला सकते जो पहुँच में ही नहीं है — क्रेडेंशियल जा चुके हैं, सर्वर बंद हो चुका है, या फ़ाइल ही वह सब कुछ है जो आपको सौंपा गया था। उस बिंदु पर फ़्लैग बेकार हैं, और आप फ़ाइल को खुद संपादित करने पर मजबूर हो जाते हैं।

मैन्युअल तरीका

स्पष्ट कदम है grep या sed से लाइनें हटाना। संरचना रखने और डेटा हटाने के लिए:

# INSERT रो को छोड़कर सब कुछ रखें
grep -v '^INSERT INTO' dump.sql > schema.sql

# या केवल-डेटा फ़ाइल के लिए सिर्फ़ INSERT रो रखें
grep '^INSERT INTO' dump.sql > data.sql

यह एक छोटे, साफ़-सुथरे डंप पर ठीक दिखता है — और फिर एक वास्तविक डंप पर टूट जाता है:

आप अपना स्कीमा पाने के बजाय अपने ही फ़िल्टर को डीबग करने में लग जाते हैं।

DumpCleaner के साथ केवल-संरचना या केवल-डेटा

DumpCleaner लाइनों से मिलान करने के बजाय SQL स्टेटमेंट को समझता है, इसलिए यह संरचना को डेटा से भरोसेमंद तरीके से अलग करता है — किसी भी आकार की फ़ाइलों पर:

  1. अपना .sql डंप DumpCleaner में खींचें (MySQL, MariaDB या PostgreSQL)। यह फ़ाइल को स्ट्रीमिंग करके पार्स करता है, इसलिए एक मल्टी-गीगाबाइट डंप स्थिर मेमोरी के साथ लोड होता है।
  2. जो स्टेटमेंट प्रकार आप चाहते हैं उन्हें टॉगल करें: CREATE TABLE, CREATE INDEX, INSERT INTO, ALTER, DROP, LOCK, SET। INSERT INTO को अनचेक करें और आपको केवल संरचना मिलती है; CREATE TABLE / CREATE INDEX को अनचेक करें और आपको केवल डेटा मिलता है।
  3. या एक प्रीसेट चुनें — केवल संरचना या केवल डेटा — ताकि हर टॉगल एक ही चरण में सेट हो जाए, फिर चाहें तो प्रति टेबल परिष्कृत करें।
  4. एक्सपोर्ट करें। आपको स्टेजिंग या CI के लिए एक हल्की स्कीमा फ़ाइल मिलती है, या सीडिंग के लिए एक साफ़ केवल-डेटा डंप।

चूँकि फ़िल्टर स्टेटमेंट-अवगत है, एक मल्टी-लाइन एक्सटेंडेड INSERT को पूरे के रूप में रखा या हटाया जाता है — कभी बीच से नहीं काटा जाता।

असली ताकत यह है कि फ़िल्टरिंग प्रति स्टेटमेंट प्रकार और प्रति टेबल काम करती है, और दोनों मिलकर काम करते हैं। आप हर टेबल की संरचना रख सकते हैं लेकिन INSERT डेटा केवल उन्हीं तीन टेबलों के लिए शामिल कर सकते हैं जिनकी आपको वास्तव में ज़रूरत है — 8.9 करोड़ रो वाली logs टेबल को एक खाली खोल के रूप में छोड़ते हुए। यह ऐसी चीज़ है जिसे कोई भी --no-data फ़्लैग व्यक्त नहीं कर सकता।

सेकंडों में संरचना को डेटा से अलग करें

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

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

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

क्या मैं स्कीमा के बिना डेटा एक्सपोर्ट कर सकता हूँ?

हाँ। CREATE TABLE और CREATE INDEX अक्षम करें (या केवल-डेटा प्रीसेट चुनें) और INSERT INTO रखें। DumpCleaner केवल रो एक्सपोर्ट करता है, जो पहले से मौजूद स्कीमा में लोड होने के लिए तैयार हैं।

क्या केवल-संरचना एक्सपोर्ट इंडेक्स और फ़ॉरेन की रखता है?

हाँ। केवल संरचना CREATE TABLE, CREATE INDEX, ALTER TABLE और फ़ॉरेन की परिभाषाएँ रखती है — वह सब कुछ जो डेटाबेस को परिभाषित करता है। केवल INSERT डेटा रो हटाई जाती हैं।

क्या मैं मिश्रण कर सकता हूँ — सभी टेबलों के लिए संरचना, कुछ के लिए डेटा?

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

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

हाँ। DumpCleaner MySQL, MariaDB और PostgreSQL डंप पढ़ता है और प्रारूप को स्वचालित रूप से पहचानता है, इसलिए केवल-संरचना और केवल-डेटा एक्सपोर्ट pg_dump फ़ाइलों के लिए उसी तरह काम करते हैं।

डेटा के बिना स्कीमा — या स्कीमा के बिना डेटा

खींचें, स्टेटमेंट प्रकार टॉगल करें, एक्सपोर्ट करें। DumpCleaner किसी भी डंप को ठीक उसी हिस्से में विभाजित करता है जिसकी आपको ज़रूरत है।

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