אדר

חיפוש עמודות וערכים בבסיס נתונים

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

איך לעשות זאת? ידעתי שבד”כ האובייקט הזה יושב בעמודה שיש לה שם קבוע בכל הטבלאות. לכן רציתי למצוא את כל הטבלאות שבהן קיימת עמודה. כזאת. חיפוש קצר בגוגל העלה מאמר עם שאילתה פשוטה על sysobjects בשילוב syscolumns שמביאה רשימה של כל הטבלאות שיש בהן עמודה עם השם שחיפשתי. מעולה!

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

זה נראה לי הרבה יותר קשה, אז חזרתי לגוגל, ומצאתי מאמר עם SQL שעושה בדיוק את זה. זו כמובן לא שאילתה פשוטה בכלל, אבל היא עושה את העבודה. יש שם אזהרה שב-DB גדול השאילתה הזאת עלולה להיות איטית. לעניות דעתי חלק מהאיטיות נובעת המעובדה שעושים שם like לערך שמחפשים. במקרה שלי יכולתי לעשות =, כך שהשאילתה היתה די מהירה.

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

2 תגובות על “חיפוש עמודות וערכים בבסיס נתונים

  1. עוד יתר נוח…

    הי לאה!

    יותר נוח אפילו מ-syscolumns ודומיו, זה סדרת ה-views הנמצאים תחת INFORMATION_SCHEMA, נועד בדיוק לזה (מה גם שאלה לא ישתנו גם בגרסות עתידיות, מה שלא מובטח עבור syscolumns…)

    כך לדוגמה היית יכולה פשוט לתשאל select * from INFORMATION_SCHEMA.Columns, הוא גם מתרגם את כל הmetadata שיש בטבלות בסיס, כולל sysobjects, systypes, וכו…

    1. תודה, זה באמת יותר נוח

      ובכלל לא הכרתי את סדרת ה-views הנמצאים תחת INFORMATION_SCHEMA, אז תודה גם על ההיכרות איתם
      אבל חבל שאין משהו כזה כדי למצוא את הערכים של עמודות…

כתבו תגובה

כתובת הדוא"ל שלכם לא תוצג.