PracticU

עבודה עם קבצי XML ישירות מ-SQL

בלי כתוביותעם כתוביות
PracticU › קורס DBA אפליקטיבי - שפת SQL למתחילים › עבודה עם קבצי XML ישירות מ-SQL
מילון מושגים:
XML - שפת סימון לייצוג נתונים מובְנים בעזרת תגיות, המשמשת להחלפת מידע בין מערכות ולקובצי הגדרות.
SQL Server - מערכת ניהול מסדי נתונים יחסיים של מיקרוסופט, הנשלטת בשפת T-SQL.
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.
תגית - סימון בקוד, למשל ב-HTML, שתוחם רכיב ומגדיר את תפקידו או תכונותיו. גם תווית לסימון וקיטלוג פריטים.
עמודה - שדה בטבלת מסד נתונים שמחזיק ערך מסוג מסוים עבור כל שורה, למשל שם או תאריך.
טבלה - מבנה במסד נתונים שמאחסן נתונים בשורות ועמודות. כל שורה היא רשומה וכל עמודה היא שדה.
root - משתמש העל במערכות Linux, בעל הרשאות מלאות לכל פעולה. גם הרמה העליונה בעץ של תיקיות או נתונים.

עבודה עם קבצי XML ישירות מ-SQL
השיעור מראה איך מקבלים תוצאות SELECT בפורמט XML ישירות מ-SQL Server, איך שומרים XML במשתנה, ואיך שולפים ומעדכנים בו נתונים.
השלבים העיקריים
1. FOR XML RAW: מוסיפים לשאילתה את FOR XML RAW. כל שורה נכתבת כתגית row, והעמודות מופיעות כתכונות (attributes) בתוך אותה תגית.
2. FOR XML AUTO: שם התגית הוא שם הטבלה, והעמודות נשארות attributes.
3. ELEMENTS: כשמוסיפים ELEMENTS, כל עמודה נכתבת כתגית נפרדת ולא כתכונה.
4. PATH ו-ROOT: FOR XML PATH('employee') נותן לכל שורה שם תגית, ו-ROOT('employees') עוטף את כל השורות בתגית אחת. בלי ROOT הקובץ אינו XML תקין, כי אין לו תגית עוטפת אחת.
5. ערכי NULL: בלי XSINIL עמודה ריקה לא מופיעה בכלל. עם ELEMENTS XSINIL מופיעה תגית עם xsi:nil="true".
6. תת-שאילתה: בתוך השאילתה אפשר להחזיר עמודה שכל ערך בה הוא XML של ההזמנות של העובד, בעזרת תת-שאילתה עם FOR XML.
7. משתנה מסוג xml: DECLARE @x XML ו-SET @x = (SELECT ... FOR XML ...) שומרים את המסמך במשתנה, ואפשר להדפיס אותו.
8. שליפה מתוך ה-XML: @x.query('/employees/employee/last_name') מחזיר את החלק המבוקש.
9. עדכון: @x.modify(...) מאפשר replace value of, insert element ו-delete. כל פקודה מעדכנת צומת אחד, ולכן בוחרים את המיקום במדויק, למשל [1].
שימו לב
שמות התגיות ב-query ו-modify חייבים להתאים למסמך בדיוק, כולל אותיות גדולות וקטנות.
בסיום תוכלו לייצא שאילתה לפורמט XML, לשמור אותה במשתנה, ולשלוף ממנה ולעדכן נתונים.

פרקי ההרצאה: עבודה עם קבצי XML ישירות מ-SQL

  1. 00:00

    מבוא: ייצוא נתונים מ-SQL לפורמט XML

  2. 00:52

    FOR XML RAW והתכונות של השורה

  3. 02:23

    אפשרות AUTO ושם התגית לפי הטבלה

  4. 03:20

    ELEMENTS: עמודות כתגיות נפרדות

  5. 04:02

    קובץ XML תקין וצורך בתגית עוטפת

  6. 05:04

    תגית ROOT שעוטפת את כל השורות

  7. 05:48

    שינוי שם תגית השורה ל-Employee

  8. 06:32

    הגדרת התגית לכל עובד בעזרת ROW

תמלול ההרצאה: עבודה עם קבצי XML ישירות מ-SQL

הטקסט המלא של הדקות הראשונות בהרצאה «עבודה עם קבצי XML ישירות מ-SQL» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:03

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

  2. 00:26

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

  3. 00:50

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

  4. 01:14

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

  5. 01:30

    כל שורה בקובץ בגריד מתקבלת כאן כשורה בקובץ XML, כאשר הנתונים עצמם, העמודות שאותן שלפתי לצורך העניין, שכרגע שלפתי ארבע עמודות, הן מוצגות לפניכם באדום, first name, last name, city ו-region, כולן מתקבלות כ-attributes.

  6. 01:53

    מה זה אומר attributes? בתוך row כתגית אין לי תגית נוספת של first name, לא פתחתי גם תגית נוספת עבור last name וכו' וכו', אלא בתוך תגית אחת המייצגת שורה אני מקבל את כל הנתונים בצורה של Attributes.

  7. 02:15

    שימו לב ששם התגית שניתן לי זהו שם דפולטי של ROW כשורה. אפשרות אחרת שבה אני יכול לשלוף ובה אני מקבל Auto, דהיינו אני אייצר כאן את התגיות אבל לא עם השם דפולטי אלא עם השם המתאים של השאילתה, ומכיוון שכאן אנחנו שולפים מטבלת Employees, שימו לב שבהרצה של F5 אני פותח ואני אני מזהה שהתגית שלי היא לא רואו הדיפולטי

  8. 02:46

    אלא הגעתי לאמפלואיז שם הטבלה שמות העמודות כמובן כבר ללא שינוי בנקודה הזאת מכיוון שיצרנו גם ברואו וגם באאוטו בואו נציין לפנינו את שני הדוגמאות היה לנו כאן את רואו כרגע יצרנו את אאוטו יש לי אפשרות לומר בשניהם גם ברואו וגם באאוטו לומר לו או שאני לא רוצה לקבל את המידע הזה כ-Attributes,

  9. 03:16

    First Name שווה Last Name זה Attributes זה לא תגית שכוללת תגית פתיחה ותגית סיום אלא אני רוצה לקבל את זה כתגיות נפרדות והמילה כאן הרלוונטית מבחינתנו זה Elements.

  10. 03:31

    אלמנטס שימו לב שברגע שאני מריץ את זה ב-F5 אז אני מקבל שיש לי תגית של Employees עבור כל עובד תגית מכיוון שזה Auto, שם התגית כשם הטבלה, שם התגיות בפנים כשם העמודות שאותן אני שולף, first name לפנינו, last name, city ו-region אלה התגיות, או במילים אחרות אלה העמודות

  11. 03:59

    שאותן שלפתי בפקודת ה-select. כאן אני מקבל אותם כ-elements. יש לי אפשרות גם, זהו, מדובר כאן, אם נחזור לקובץ ה-XML, מדובר כאן על קובץ XML לא תקני, לא ולידי.

  12. 04:13

    מדוע? מאחר ומדובר כאן על הרבה מאוד שורות של employees כאשר אין לנו תגית אחת שעוטפת את כולם, תגית אחת שפותחת וסוגרת את כל שלל התגיות הללו.

  13. 04:30

    מדובר על קובץ XML מאוד מעניין כיוון שהוא מכיל לי מידע עבור העמודות שאותן שלפתי, first name ו-last name עבור כל עובד ועובד. כאן אנחנו רואים שעובד שרשום לו נ"ל בתוך סיטי ובתוך ריג'ן, העמודות הללו, התגיות הללו, לא מוצגות כלל, ואת הנושא הזה אנחנו נפתור בהמשך.

  14. 04:56

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

  15. 05:31

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

  16. 06:01

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

  17. 06:24

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

  18. 06:47

    גם כאן הפסיק הזה נפל לנו בטעות ואני מציין כאן שאני רוצה את זה ברמה של רואו אולם אני אומר לו שים לב לא רוצה את הדיפולט של האמפלואיז אלא אני רוצה לשלוט שהרואו שלי כל עובד יקבל תגית של אמפ אמפלואי ההרות העוטפת את כל העובדים זה אמפס בואו נריץ זאת f5 נקבל את הקובץ xml והנה הפלא ופלא קיבלתי תגית שבה אני יכול לשלוט

  19. 07:17

    כיצד ייראה כל עובד, מהי תגית פתיחה ותגית

לקורס המלא: קורס SQL ו‑DBA אפליקטיבי

ההרצאה הקודמת: ייצוא לאקסל - Export to Excel

ההרצאה הבאה: מבוא Execution Plan

הרצאות קשורות מקורסים אחרים

  • XML
  • מה הם קבצי JAR
  • קבצי BAT
  • LINQ ל- XML

קורסים נוספים במסלול

  • קורס NoSQL - MongoDB
  • קורס SSIS
  • קורס BI - ניתוח מסדי נתונים - Qlik Sense
  • קורס Power BI