חילוץ טבלה בודדת מ-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 כמו שצריך — הוא מבין גבולות פקודות, INSERTs רב-שורתיים, backticks והערות — אז הוא תמיד חותך בשורות הנכונות. חילוץ הטבלאות שאתם צריכים לוקח ארבעה שלבים:

  1. גררו את קובץ ה-.sql שלכם פנימה. DumpCleaner מזרים את הקובץ, אז dump של 7 ג'יגה-בייט נפתח עם זיכרון קבוע במקום לטעון את הכל.
  2. קראו את רשימת הטבלאות שזוהתה אוטומטית. כל טבלה מפורקת ומוצגת עם מספר השורות והגודל שלה — בלי לגלול דרך מיליוני שורות כדי למצוא מה יש שם.
  3. בחרו את הטבלאות שאתם רוצים. סמנו users, orders ו-products, או הקלידו תבנית regex / החרגה כמו *_logs כדי להפיל קבוצות שלמות בבת אחת.
  4. כללו הורי מפתח זר וייצאו. אופציונלית משכו את טבלאות ההורה המצוינות אוטומטית, ואז ייצאו קובץ נקי וניתן-לייבוא.

כמה דברים הופכים את זה לפחות מעצבן מכלי מעטפת:

בדיוק הטבלאות שאתם צריכים — כלום מעבר

DumpCleaner מחלץ טבלאות ספציפיות מ-dumps בכל גודל — בזרימה, עם זיכרון קבוע, ועם מפתחות זרים שנפתרים עבורכם. אפליקציית macOS & iPadOS מקורית, רכישה חד-פעמית.

הורדה מ-App Store

שאלות נפוצות

האם אני יכול לחלץ כמה טבלאות בבת אחת?

כן. סמנו כמה טבלאות שתרצו — users, orders ו-products יחד — ו-DumpCleaner כותב את כולן לקובץ אחד במעבר אחד.

האם הוא שומר על תלויות מפתח זר?

אופציונלית, כן. הפעילו כלול תלויות מפתח זר וכל טבלת הורה שמצוינת על ידי הבחירה שלכם נמשכת פנימה אוטומטית, כך שהחילוץ מתייבא בלי שגיאות אילוץ.

האם אני יכול להחריג טבלאות לפי תבנית?

כן. השתמשו בתבניות החרגה כמו *_logs או *_sessions, או בביטוי רגולרי, כדי להפיל קבוצות שלמות של טבלאות במקום לבטל את הסימון שלהן אחת-אחת.

האם זה עובד עם PostgreSQL?

כן. DumpCleaner קורא dumps של MySQL, MariaDB ו-PostgreSQL (pg_dump), ומטפל בשמות מוסמכי-סכמה כמו public.users בעת חילוץ טבלאות.

הפסיקו להילחם ב-sed וב-grep

גררו, בחרו את הטבלאות שלכם, ייצאו. DumpCleaner מושך בדיוק את הטבלאות שאתם צריכים — עם המפתחות הזרים שלהן — מכל dump.

הורדה מ-App Store