בדף הזה מוסבר איך להמיר נתונים של מיינפריים באופן מקומי במיינפריים לפורמט נתמך, ואז להעביר את התוכן אל Google Cloud.
לפני שמתחילים
מתקינים את Mainframe Connector בכל קבוצת נתונים מחולקת למחיצות של מחשב מרכזי שרוצים להשתמש בה כספריית פרוצדורות (PROCLIB).
הפקודות qsam ו-vsam
המרת קידוד היא תהליך של המרת מידע מצורה אחת של ייצוג מקודד לצורה אחרת. ב-Mainframe Connector יש את הפקודות qsam ו-vsam להמרת קידוד של נתונים באופן מקומי במחשב המרכזי.
הפקודות qsam decode ו-vsam decode משתמשות ב-COBOL copybook כדי להמיר את הרשומות של קבוצת נתונים במחשב מרכזי לפורמט קובץ כמו ORC, CSV, JSONL או AVRO, ולכתוב את הפלט באופן מקומי או בקטגוריה של Cloud Storage.
לדוגמה, אתם יכולים להמיר מערך נתונים של QSAM בקידוד EBCDIC לקובצי ORC בקידוד UTF-8. במאמר TranscodeFormat מפורטים כל הפורמטים הנתמכים של הפלט.
הפקודה qsam encode עושה את ההפך: היא ממירה נתוני CSV, JSONL, ORC או AVRO, או את התוצאות של שאילתת BigQuery, למערך נתונים של QSAM.
כאן מפורטים כל הפורמטים הנתמכים של קלט.TranscodeInputFormat
הפקודות האלה מספקות את היכולות הבאות:
- תמיכה בסוגי נתונים מורכבים, כולל סעיף OCCURS (רשימות), סעיף REDEFINES ורשומות בתצוגת עץ. מידע נוסף על סוגי הנתונים האלה זמין במאמר המרת קידוד של
qsamו-vsam. - תמיכה בהגדרה של תהליך המרת הקידוד באמצעות קובץ תצורה של ממיר קידוד. היכולת הזו מאפשרת גמישות רבה יותר בפענוח הנתונים ל- Google Cloud, ובקידוד הנתונים בחזרה למחשב המרכזי.
- תמיכה ביצירת מערך נתונים של זליגה, שהוא טבלה של שגיאות המרת קידוד שאפשר להשתמש בה כדי לבדוק שגיאות.
- תמיכה בפורמטים מרובים של קלט ופלט. היכולת הזו מאפשרת לכם לטעון את הנתונים שלכם אל מחסני נתונים שונים וממחסני נתונים שונים.
המרת קידוד של נתוני מיינפריים באופן מקומי והעברה שלהם אל Google Cloud
באמצעות Mainframe Connector אפשר להמיר נתונים באופן מקומי במחשב המרכזי, ואז להעביר אותם ל-Cloud Storage. איך לעשות את זה?
יוצרים משימה לקריאת מערך הנתונים במחשב המרכזי ולהמרת הקידוד שלו לפורמט ORC. קוראים את הנתונים מקבוצת הנתונים
INFILEואת פריסת הרשומות מ-COPYBOOK DD.כדי לשנות את פעולת ברירת המחדל של תהליך המרת הקידוד של Mainframe Connector, אתם יכולים לספק קובץ תצוגה של המרת קידוד באמצעות הארגומנט
--transcode-configuration.אם קבוצת הנתונים של הקלט היא קובץ בשיטת גישה סדרתית בתור (QSAM) עם אורך רשומה קבוע או משתנה, משתמשים בפקודה הבאה:
//STEP01 EXEC BQSH //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.CPY //CONFIG DD DISP=SHR,DSN=<HLQ>.CONFIG.SETTINGS //STDIN DD * BUCKET=BUCKET_NAME qsam decode --copybook dd:COPYBOOK --transcode-configuration dd:CONFIG dd:INFILE gs://$BUCKET/tablename /*אם קבוצת הנתונים של הקלט היא קובץ Virtual Storage Access Method (VSAM) עם אורך רשומה קבוע או משתנה, משתמשים בפקודה הבאה:
//STEP01 EXEC BQSH //INFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.CPY //CONFIG DD DISP=SHR,DSN=<HLQ>.CONFIG.SETTINGS //STDIN DD * BUCKET=BUCKET_NAME vsam decode --copybook dd:COPYBOOK --transcode-configuration dd:CONFIG dd:INFILE gs://$BUCKET/tablename /*מחליפים את
BUCKET_NAMEבשם של הקטגוריה ב-Cloud Storage שאליה רוצים להעתיק את הנתונים מהמחשב המרכזי.
בדוגמה הזו,
DD DataPathמשמש לציון הנתיב של ה-copybook, הקלט והגדרת המרת הקידוד. אפשרויות נוספות מפורטות במאמרDataPath.כדי להימנע מהצורך לציין משתנים כמו מזהי פרויקטים ושמות של קטגוריות בכל פרוצדורה של שפת בקרת משימות (JCL), אתם יכולים להוסיף אותם ל-BQSH PROCLIB ולהפנות אליהם בכמה פרוצדורות של JCL כמשתני סביבה. הגישה הזו גם מפשטת את המעבר בין סביבות ייצור לסביבות ללא ייצור, כי משתנים ספציפיים לסביבה מוגדרים ב-BQSH PROCLIB של הסביבה.
אם רוצים לתעד את הפקודות שבוצעו במהלך התהליך הזה, אפשר להפעיל את סטטיסטיקות הטעינה.
יוצרים ושולחים משימת טעינה ב-BigQuery שטוענת את הקובץ שעבר המרת קידוד ל-BigQuery. לדוגמה, אם המרתם את הנתונים לפורמט ORC, אתם יכולים לטעון את המחיצות של קובץ ה-ORC מ-
tablename.orcל-MY_DATASET.MY_TABLE, באופן הבא:Example JCL //STEP02 EXEC BQSH //STDIN DD * BUCKET=BUCKET_NAME PROJECT=PROJECT_NAME bq load --project_id=$PROJECT \ myproject:MY_DATASET.MY_TABLE \ gs://$BUCKET/tablename.orc/* /*מחליפים את מה שכתוב בשדות הבאים:
-
BUCKET_NAME: השם של הקטגוריה ב-Cloud Storage שמכילה את קובצי ה-ORC שרוצים לטעון ל-BigQuery. -
PROJECT_NAME: שם הפרויקט שבו רוצים להריץ את השאילתה.
-
אופציונלי: יוצרים ושולחים משימת שאילתה ב-BigQuery שמריצה קריאת SQL מקובץ QUERY DD. בדרך כלל, השאילתה תהיה הצהרת
MERGEאוSELECT INTO DMLשתוביל לטרנספורמציה של טבלה ב-BigQuery. שימו לב ש-Mainframe Connector מתעד מדדי משימות, אבל לא כותב תוצאות של שאילתות בקובץ.אפשר לשלוח שאילתות ל-BigQuery בכמה דרכים: בתוך השורה, באמצעות מערך נתונים נפרד עם
DDאו באמצעות מערך נתונים נפרד עםDSN.Example JCL //STEP03 EXEC BQSH //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR //STDIN DD * PROJECT=PROJECT_NAME LOCATION=LOCATION bq query --project_id=$PROJECT \ --location=$LOCATION/* /*מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NAME: שם הפרויקט שבו רוצים להריץ את השאילתה. -
LOCATION: המיקום שבו תתבצע השאילתה. מומלץ להריץ את השאילתה במיקום שקרוב לנתונים.
-
אופציונלי: יוצרים ושולחים משימת ייצוא שמבצעת קריאת SQL מקובץ QUERY DD, ומייצאת את מערך הנתונים שנוצר למחשב mainframe כקובץ בינארי.
//STEP04 EXEC BQSH //OUTFILE DD DSN=<HLQ>.DATA.FILENAME,DISP=SHR //COPYBOOK DD DISP=SHR,DSN=<HLQ>.COPYBOOK.CPY //CONFIG DD DISP=SHR,DSN=<HLQ>.CONFIG.SETTINGS //QUERY DD DSN=<HLQ>.QUERY.FILENAME,DISP=SHR //STDIN DD * PROJECT=PROJECT_NAME qsam encode \ dd:QUERY dd:OUTFILE --copybook dd:COPYBOOK --transcode-configuration dd:CONFIG --input-format=BIGQUERY \ --input-parameter project_id=PROJECT_NAME \ --input-parameter location=LOCATION/* /*מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NAME: שם הפרויקט שבו רוצים להריץ את השאילתה. -
LOCATION: המיקום שבו תתבצע השאילתה. מומלץ להריץ את השאילתה במיקום שקרוב לנתונים.
כדי לשנות את פעולת ברירת המחדל של תהליך המרת הקידוד של Mainframe Connector, אתם יכולים לספק קובץ תצורה של המרת קידוד באמצעות הארגומנט
--transcode-configuration.הנתונים מיוצאים לקבוצת הנתונים
OUTFILE DD. פריסת הרשומה מתוארת ב-COPYBOOK DD. אפשרויות אחרות לנתיבי ההגדרה של copybook, outfile ו-transcoding מפורטות במאמרDataPath.-