لا تحتاج كل مهمة إلى قاعدة البيانات كاملة. فحين تبني ميزة محليًا، نادرًا ما تريد ملف 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 غيغابايت ينهار بطرق دقيقة كثيرة:
- عبارات INSERT متعددة الأسطر. يمكن لعبارة
INSERT INTO ... VALUESواحدة أن تمتدّ آلاف الأسطر. تقطع الأدوات الموجّهة بالأسطر مثلsedوgrepتلك الصفوف نصفين وتنتج ملفًا لا يُحلَّل. - العلامات الخلفية والمحارف الخاصة. تحتوي قيم الأعمدة على
--وفواصل منقوطة وعلامات خلفية وعلامات اقتباس وأسطر جديدة داخل السلاسل النصية. فيطابق نمطك نصًا داخل البيانات لم يُقصَد به أن يكون فاصلًا قط. - أسماء الجداول كسلاسل فرعية. استخراج
userيلتقط أيضًاuser_rolesوuser_sessionsوpassword_user، لأن الاسم يظهر كسلسلة فرعية داخل غيره. - انحراف التعليقات والترويسات. يختلف نص التعليق الدقيق بين إصدارات MySQL وMariaDB وPostgreSQL، ولا يستخدم
pg_dumpالترويسات نفسها إطلاقًا — فيعيد الأمر نفسه لا شيء بصمت. - لا وعي بالمفاتيح الخارجية. حتى لو قطعت
ordersبإتقان، فإن صفوفه تشير إلىusers. لا يدركsedذلك، فيفشل استيراد المُستخرَج بخطأ مفتاح خارجي.
ينتهي بك الأمر إلى تكديس awk فوق grep فوق sed، والاختبار على عيّنات فرعية، ومع ذلك لا تثق بالنتيجة. هناك طريقة أفضل.
استخراج الجداول باستخدام DumpCleaner
يحلّل DumpCleaner الـ dump على نحو صحيح — فهو يفهم حدود العبارات، وعبارات INSERT متعددة الأسطر، والعلامات الخلفية، والتعليقات — فيقطع دائمًا عند الأسطر الصحيحة. استخراج الجداول التي تحتاجها يستغرق أربع خطوات:
- اسحب ملف
.sqlإلى الداخل. يبثّ DumpCleaner الملف، فيُفتح ملف dump بحجم 7 غيغابايت باستهلاك ذاكرة ثابت بدلًا من تحميله بأكمله. - اقرأ قائمة الجداول المكتشَفة تلقائيًا. يُحلَّل كل جدول ويُدرَج مع عدد صفوفه وحجمه — دون التمرير عبر ملايين الأسطر للعثور على ما هو موجود.
- اختر الجداول التي تريدها. حدِّد
usersوordersوproducts، أو اكتب نمطًا regex / نمط استبعاد مثل*_logsلإسقاط مجموعات كاملة دفعة واحدة. - ضمِّن الجداول الأب للمفاتيح الخارجية وصدِّر. اختياريًا اسحب الجداول الأب المُشار إليها تلقائيًا، ثم صدِّر ملفًا نظيفًا قابلًا للاستيراد.
بعض الأمور تجعل هذا أقل إزعاجًا بكثير من أدوات الصدفة (shell):
- أنماط الاستبعاد مثل
*_logsأو*_sessionsتزيل ضجيج التدقيق والجلسات دون إلغاء تحديد عشرات الجداول يدويًا. - مرشّحات Regex تتيح لك المطابقة حسب البادئة أو اللاحقة أو أي نمط — احتفظ بكل ما يطابق
shop_*مثلًا. - معاينة حيّة تُظهر بالضبط أيّ الجداول ستنتهي في المخرجات وأنت تغيّر التحديد.
- حجم مخرجات تقديري يخبرك بمدى كِبَر المُستخرَج قبل التصدير، فتعلم أنه سيتّسع محليًا.
- تبعيات المفاتيح الخارجية يمكن تضمينها تلقائيًا، فاختيار
ordersيجلب معهusersبهدوء ويُستورَد المُستخرَج دون أخطاء قيود.
الجداول التي تحتاجها فقط — لا شيء غيرها
يستخرج 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