استخراج جدول واحد من ملف MySQL dump

لديك ملف dump بحجم 7 غيغابايت يحوي 127 جدولًا، لكنك محليًا تحتاج ثلاثة منها فقط — users وorders وproducts. إليك سبب فشل حِيَل sed/grep المعتادة، وكيفية سحب الجداول التي تريدها بالضبط (مع مفاتيحها الخارجية) بنقرات قليلة.

لا تحتاج كل مهمة إلى قاعدة البيانات كاملة. فحين تبني ميزة محليًا، نادرًا ما تريد ملف dump إنتاجيًا كاملًا يملأ قرصك ويستغرق استيراده ساعة. أنت تريد حفنة الجداول التي تمسّها الميزة فعلًا.

الأمر نفسه صحيح عند تصحيح خطأ في جدول واحد — فإعادة إنتاج مشكلة بيانات في orders لا تتطلّب الجداول الـ 126 الأخرى — أو عند إجراء ترحيل جزئي، حيث تنتقل بضعة جداول فقط إلى خدمة جديدة. في كل هذه الحالات السؤال واحد: كيف أحصل على هذه الجداول فقط من ملف dump ضخم، بنظافة وسرعة؟

أسلوب sed/grep ولماذا يفشل

الجواب الكلاسيكي هو تقطيع الملف بـsed بين ترويسات الأقسام التي يكتبها mysqldump لكل جدول:

# سحب جدول users من ملف mysqldump
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql

يبدو الأمر ذكيًا، وقد ينجح مرة على ملف dump صغير ومرتّب. لكنه على ملف حقيقي بحجم 7 غيغابايت ينهار بطرق دقيقة كثيرة:

ينتهي بك الأمر إلى تكديس awk فوق grep فوق sed، والاختبار على عيّنات فرعية، ومع ذلك لا تثق بالنتيجة. هناك طريقة أفضل.

استخراج الجداول باستخدام DumpCleaner

يحلّل DumpCleaner الـ dump على نحو صحيح — فهو يفهم حدود العبارات، وعبارات INSERT متعددة الأسطر، والعلامات الخلفية، والتعليقات — فيقطع دائمًا عند الأسطر الصحيحة. استخراج الجداول التي تحتاجها يستغرق أربع خطوات:

  1. اسحب ملف .sql إلى الداخل. يبثّ DumpCleaner الملف، فيُفتح ملف dump بحجم 7 غيغابايت باستهلاك ذاكرة ثابت بدلًا من تحميله بأكمله.
  2. اقرأ قائمة الجداول المكتشَفة تلقائيًا. يُحلَّل كل جدول ويُدرَج مع عدد صفوفه وحجمه — دون التمرير عبر ملايين الأسطر للعثور على ما هو موجود.
  3. اختر الجداول التي تريدها. حدِّد users وorders وproducts، أو اكتب نمطًا regex / نمط استبعاد مثل *_logs لإسقاط مجموعات كاملة دفعة واحدة.
  4. ضمِّن الجداول الأب للمفاتيح الخارجية وصدِّر. اختياريًا اسحب الجداول الأب المُشار إليها تلقائيًا، ثم صدِّر ملفًا نظيفًا قابلًا للاستيراد.

بعض الأمور تجعل هذا أقل إزعاجًا بكثير من أدوات الصدفة (shell):

الجداول التي تحتاجها فقط — لا شيء غيرها

يستخرج DumpCleaner جداول محددة من ملفات dump بأي حجم — بالبثّ، وباستهلاك ذاكرة ثابت، ومع حلّ المفاتيح الخارجية نيابةً عنك. تطبيق أصلي لنظامي macOS وiPadOS، بشراء لمرة واحدة.

التنزيل من App Store

الأسئلة الشائعة

هل يمكنني استخراج عدة جداول دفعة واحدة؟

نعم. حدِّد ما تشاء من الجداول — users وorders وproducts معًا — ويكتبها DumpCleaner جميعًا في ملف واحد بمرور واحد.

هل يحافظ على تبعيات المفاتيح الخارجية؟

اختياريًا، نعم. فعِّل تضمين تبعيات المفاتيح الخارجية وأي جدول أب يشير إليه تحديدك يُسحب تلقائيًا، فيُستورَد المُستخرَج دون أخطاء قيود.

هل يمكنني استبعاد الجداول حسب نمط؟

نعم. استخدم أنماط استبعاد مثل *_logs أو *_sessions، أو تعبيرًا نمطيًا (regular expression)، لإسقاط مجموعات كاملة من الجداول بدلًا من إلغاء تحديدها واحدًا تلو الآخر.

هل يعمل مع PostgreSQL؟

نعم. يقرأ DumpCleaner ملفات dump من MySQL وMariaDB وPostgreSQL (pg_dump)، ويتعامل مع الأسماء المؤهَّلة بالمخطّط مثل public.users عند استخراج الجداول.

توقّف عن مصارعة sed وgrep

اسحب، واختر جداولك، وصدِّر. يسحب DumpCleaner الجداول التي تحتاجها بالضبط — مع مفاتيحها الخارجية — من أي ملف dump.

التنزيل من App Store