
product.csv. הוא מזהה את פורמט הקובץ, את מפריד השורות (Carriage Return/Line Feed) ואת מפריד העמודות (פסיק), ומציג preview. אפשר לשנות שמות עמודות וסוגי נתונים.My Products, ואז New יוצר טבלה בשם הזה.TRUNCATE TABLE על My Products, ומחברים אותו לפני ה-Data Flow.הטקסט המלא של הדקות הראשונות בהרצאה «קישור בין רכיבים בתוך Toolbox SSIS» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, בשיעורנו היום נכיר קצת רכיבים נוספים בנושא של ה-SSIS Toolbox. ראשית, אנחנו צריכים להבין ששולחן העבודה שלנו כאן זה ה-Control Floor. לכאן אנחנו יכולים להוריד כל אחד מהקומפוננטות שנמצאות לנו כאן מצד שמאל של המסך.
הקומפוננטה הפופולרית ביותר הם אלו שנמצאות כאן בתוך ה-Favorite. אגב, אם ישנם רכיבים אחרים שמעניינים אותנו ואנחנו רוצים להשתמש בהם בצורה תכופה יותר, אנחנו יכולים לעמוד עליהם, קליקים אני ו-Move to Favorites, כלומר להעביר אותם לרמה שהם מועדפים עלינו.
הקומפוננטה שנמצאת בדרך כלל כשאנחנו משתמשים בה זה הוא Data Flow Task. כל Data Flow Task שאנחנו שולחים אותו, זורקים אותו כאן לתוך המסך, אנחנו יכולים גם לשנות את השם שלו כשאנחנו עומדים בפנים, ולאחר מכן כשאנחנו מגיעים כאן לתוך ה-Data Flow Task, כאן בתוך הרשימת בחירה יש לנו אפשרות לנדוד בין Data Flow Task אחד לשני.
הנה כרגע ה-Data Flow Task שלי של פרודקט, שזה אך אתה יצרתי, הוא ריק. אני רוצה ליצור דאטה פלואו טאסק נוסף, גם אותו אנחנו נזרוק לכאן, פעם נשנה לו את השם והוא יהיה employees ואם נבוא שוב פעם לתוך הדאטה פלואו טאסק ואנחנו נראה שיש לי כרגע employees, product, ו-export to excel.
כל אחד מהדוגמאות הללו נמצאות כאן. נמחק את זה ונחזור כאן לתוך התהליך עצמו. התהליך עצמו בעצם יוצר לי כאן עבודה עם הנתונים. לפני עבודה עם הנתונים יש לי אפשרות להריץ פקודת sql task.
נקודת SQL Task לחבר אותה שהיא תהיה קודמת לתהליך התעינה של הנתונים עצמם ולתעילה של הנתונים עצמם, כאן אני אוכל ללכת ולקנפג אותה. כדי לקנפג כאן את תעינת הנתונים בתוך הדאטה Flow Task יש לנו מספר רכיבים שאנחנו יכולים להשתמש בהם.
בואו ניכנס לתוך ה-Toolbox, נצמצם אותו על מנת לראות את הקטגוריות, והקטגוריות כאן אומרות לי שאנחנו יכולים להשתמש בסורסים שונים, מקורות מידע שונים לשליפה של הנתונים ובדסטיניישנים שונים.
אנחנו רוצים בדוגמה שלנו לייבא נתונים מתוך קובץ CSV אלינו. אני יכול לבחור את המקור ואת היעד מכאן. בדוגמה הזאת אני רוצה שנשתמש בתוך משהו שנמצא כאן בתוך ה-favorites, איזשהו wizard, איזשהו assistant, כדי לשלוף את הנתונים ולייבא אותם לתוך ה-destination.
אז בואו ניקח את ה-source של הדאטה שלנו, קורס אסיסטנט דאבל קליק עליו והוא אומר לי אוקיי אתה רוצה לייבא את הנתונים בו אני אוליך אותך צעד אחר צעד על ידי הוויזארד שנמצא לפנינו מאיפה אנחנו רוצים לייבא את הנתונים האם זה מ sql server מאקסל מפלאט הוא יכול להראות לי הרבה מאוד מקורות מידע אבל רק כרגע כאלה שמותקנים אצלי דרך הוויזארד שאני יכול לעבוד
עליהם שיש לי דרייבר גישה אליהם הם אלו שמצוינים כאן אנחנו רוצים לטעון נתונים מתוך פלאט פייל מתוך קובץ CSV, זהו קובץ שטוח של הנתונים.
ולכן אני לוחץ על flat fly, לוחץ כאן על new, ונפתח לי המסך שבו אני יכול להגדיר מהו אותו קובץ. דבר ראשון, אני צריך להגדיר את המיפוי, את הנתיב אליו, היכן נמצא אותו קובץ, אם אני כאן שולף את כל המידע בעצמו.
בואו ניכנס כאן לספרייה. יש לי כאן ספריית פרודקטס שאותה אני רוצה לייבס, לעומת של CSV, כאשר הדאטה בפנים מחולק לי על ידי comma Separated, Comma Delimiter, על ידי פסיק.
אני בוחר כאן את ה-product.csv, אימפורט, הוא כבר מזהה לי לפי הדאטה ולפי פורמט של הקובץ, שהוא קובץ שיש בו Carriage or Tenline Feed בסיום כל שורה, שהוא נמצא ב-collision של 10,255, ואני יכול גם לראות את המידע בעצמו, איזשהו preview לדאטה שהוא רואה אותו מתוך הקובץ,
הוא כבר זיהה לי, מעבר לזה שה-rowed delimiter הוא carriage-retail line-feed, שה-column delimiter, כלומר ההפרדה בין העמודות, נעשית על ידי קומה, על ידי פסיק, וכמובן כל אחת מהאפשרויות כאן פתוחה בפניי.
לחצתי כאן את הרשימה, כאן אני יכול לשלוט בעמודות עצמם שייווצרו לי בשמות. אולי אני רוצה לשנות את שמות העמודות עצמם בטעינה, שהשם של העמודה לא יהיה כפי שהוא מופיע בתוך הקובץ טקסט, ובמקום Employee ID לשנות אותו ל-Employee Key, ובמקום Product Name לשנות את זה ל-Product
Full Name או וואטאבר. כל שינוי, הן ברמת השמות של העמודה עצמה, הן ברמת הדאטה טייפ, מה הטייפ שאותו אנחנו רוצים לעבוד, האם זה 50 אם זה מתאים לי, האם זה סטרינג, לוחצים כאן על אוקיי, וסיימנו את התהליך ויזארד של חיבור לתוך הסורס, באותה צורה אנחנו יכולים גם להתחבר כאן לתוך ה-Destination Assisted.
דאבל קליק עליו ואנחנו מתחילים ויזארד לאן אנחנו רוצים להכניס אותם, אנחנו רוצים להכניס אותם לתוך בסיס הנתונים של SQL Server. אני לוחץ כאן על New, אוקיי, הבאת הנתונים מתוך קובץ טקסט לתוך SQL Server. ובתוך השרת אני יכול לחפש את השם או פשוט להקליד את שם השרת שאליו אני מחובר.
האם אני מדבר כאן על Integrated Security? כלומר, על אותנטיקציה ברמת הווינדאוז או אותנטיקציה ברמת ה-SQL. בשלב הזה אנחנו נישאר על אותנטיקציה ברמת הווינדאוז.
לסמוך על השם משתמש והסיסמה שאיתה התחברתי לתוך מערכת ההפעלה. לאיזה דאטאבס אנחנו רוצים לייבא את זה? נישאר בתוך ה-Northwind שאליו אנחנו רוצים להביא.
טסט קונקשן, הכל סקסידד, אוקיי, וחיברתי גם את ה-Destination לתוך ה-Flatfile. כל מה שנותר לי כרגע זה רק לחבר בין ה-Source ובין ה-Destination.
עדיין קופצת לי כאן הערת אזהרה אדומה שאומרת לי, אוקיי, בחרת את הדאטאבס, אבל אתה עכשיו, אחרי שהבאת את הנתונים, אתה צריך לבחור לאיזה טבלה אתה רוצה שאני אביא את הנתונים.
ניתן לבחור טבלה קיימת וניתן לחלופין ללחוץ כאן על New, והוא יוצר לנו כאן את שם הטבלה שאותה אנחנו רוצים. אני רוצה לא את האפשרות הזאת ולא את האפשרות השנייה, אני רוצה לפני זה לשנות כאן את השם של הקומפוננטה עצמה.
שינוי של השם של הקומפוננטה, ולאחר מכן כאן לחיצה על New, מוודא לי ששם הטבלה שאותה הוא יוצר לי הוא כשם הקומפוננטה שעליה אנחנו נמצאים, ומאחר ושיניתי את זה ל-My Products, כרגע הטבלה שתיווצר לי בתוך בסיס הנתונים שאליו אני מחובר, תיקרא My Products.
הפיצה על אוקיי יצרה את הטבלה בתוך הדאטאבס והיא מכינה אותה כרגע לטעינה. My Products מוכנה לטעינה. בשלב הבאת הנתונים יש לי אפשרות לחלק בין הבאה מ-Table of View או להביא מ-Table of View Fast Loaded.
ההבדל ביניהם שב-Table of View אין לי אפשרות לקנפג את אופן ההבאה של הנתונים. האם להביא אותם בבלקים, האם להביא אותם בבצ'ים, למה להביא בכל טעינה?
לעומת זאת בפאסט לואוד יש לי אפשרות לקנפג כל אחת מההגדרות הללו, לבדוק קונסטרנטים, לבדוק נאל, לבדוק אידנטיטי שיש באותם עמודות וכו'.
אנחנו נישאר ברמה של הבאת הנתונים טייבל אוף ויו. חייבים, חייבים, חייבים לאחר השלב הזה להיכנס לטאב מצד שמאל של מפינג על מנת שבפועל הוויז'ואל סטודיו ידע לבצע את המיפוי.
על מנת שהוא יבצע את המיפוי בין ה-source לדיסטינשן. אז אני חייב ללחוץ כאן על מפינג, ורק ברגע שאני לוחץ נוצרים החיצים הללו. החיצים הללו נוצרים מאחר והוא מזהה שהשם שלי בטבלת המקור זהה לחלוטין לשם שלי בטבלת יעד, ולכן הוא יכול לבצע את המיפוי בצורה אוטומטית, פרודקט קי לתוך פרודקט
קי. לוחץ כאן על אוקיי, והתהליך שלי כרגע ערוך ומוכן להרצה. אם אני אלחץ כאן על סטארט שנמצא בכפתורים שלנו למעלה, אני אעריץ בעצם את כל הפקאג' שלי.
הפקאג' עצמו מורכב ממספר רכיבים. אנחנו רוצים רק להריץ תהליך אחד, את ה-execute SQL אנחנו נוותר עליו בשלב הזה, ואנחנו רוצים רק להריץ כרגע דאטה פלואו מסוים, תהליך אחד בלבד, כמה אפשרויות קיימות לי.
או שאני מנטרל את כל השאר, קליק ימני - Disabled, קליק ימלי Disabled על מנת לנטרל אותם ואז את התהליך עצמו אני יכול להריץ. אז גם טוב לי לבצע הרצה של כל הפקאג' מאחר והוא יריץ לי רק את אלו שהם לא Disabled.
לחלופין, אני לא חייב לנטרל אותם, אפשר להשאיר אותם גם במוד של Enabled ולגשת לאותו קומפוננטה, לאותו DataFlow ורק אותו להריץ על ידי קליק ימלי Execute Task.
בואו נעשה זאת. הערצה של התהליך לוקחת מספר שניות ובסיומם היא מסתיימת עם v ארוך. אני יכול להיכנס לתוך ה-data flow ורואה שכל אחד מהתהליכים שלי הסתיימו.
תוך כל אחד מהתהליכים אני יכול גם לקבל אינדיקציה, חיווי, כמה שורות עברו מה-source ומה-destination. רק אחרי שאני סוגר את זה, לוחץ על הכפתור האדום של stop debugging, אני יכול לחזור למצב של עריכה.
בואו ניכנס לתוך ה-management studio. פתחתי את ה-management studio, מסך חדש, התחברתי לתוך ה-Nerve Wind ואני יכול לתשאל את הטבלה החדשה שלנו, טבלת My Products.
הרצאה של הטבלה עצמה, והנה היא מביאה לי את 77 השורות שהבאתי אותן מתוך קובץ ה-CSV. כל השורות, כל הדאטה עצמו הגיעה והכל נמצא כאן לפנינו. ניתן לראות איך כל השורות עצמן התמלאו, הטבלה עצמה נוצרה וכל התהליך הזה כרגע קיים בפניי כתוצאה מהיבוא שלו בתוך תהליך ה-SSS.
אם נרצה להריץ את התהליך הזאת שוב פעם, אז שוב הטבלה שלנו תתנפח ותקבל את כל הנתונים בצורה כפולה עוד ועוד פעמים. מאחר ואין לי כרגע בדיקה של אידנטיטי, בדיקה של פריימרי קי, בדיקה של יוניקיות, אז הטבלה תלך ותתנפח שוב ושוב.
כדי למנוע דבר כזה, במידה ואנחנו רוצים לעשות ריסט על הטבלה בכל פעם שאנחנו מריצים אותה, בשביל זה יש לנו כאן את הקומפוננטה, את הטולבוקס של Execute SQL Task.
אזרוק אותו כאן. Execute SQL Task, היכולת שלי בעצם לכתוב פקודת SQL אשר מבצעת כל מניפולציה שהיא שליפה, update, עדכון, delete או insert, כל מניפולציה sqlית עבור הדאטאבס. אנחנו רוצים לעשות טרנקט לטבלה שלנו, אז נעשה כאן
טרנקט טייבל ונציין שאנחנו מבצעים כאן טרנקט טייבל. טייבל לטבלת מי פרודקטס וניכנס בפנים על מנת לקנפג את זה דאבל קליק קיבלנו את המסך execute sql task editor היכולת שלנו לקנפג