סביבות עבודה להמרת מסדי נתונים עוזרות להמיר את הסכימה והאובייקטים ממסד הנתונים של המקור לתחביר SQL שתואם למסד הנתונים של היעד. בדף הזה מופיעה סקירה כללית על סביבות עבודה להמרת מסדי נתונים ב-Database Migration Service:
במאמר אפשרויות אתחול של סכימת מקור מוסבר איך לאכלס את סביבת העבודה על ידי התחברות ישירה למסד הנתונים או על ידי העלאת קובצי סכימה ל-Cloud Storage.
סקירות כלליות של המרות מספקות חתך רוחב של התקדמות ההמרות בסכימה.
אובייקטים שנתמכים על ידי הקוד הדטרמיניסטי והמרת הסכימה מפרט את אובייקטי Oracle שנתמכים להמרת סכימה דטרמיניסטית.
במאמר עורך SQL אינטראקטיבי מתוארים האובייקטים שאפשר לשנות ישירות בעורך של סביבת העבודה להמרת מסדי נתונים.
תכונות המרה מבוססות-Gemini: איך אפשר לשלב תמיכה ב-AI גנרטיבי כדי לזרז את תהליך המרת הסכימה.
בקטע קובצי מיפוי המרות מופיעה סקירה כללית של הוראות ההתאמה האישית שבהן אפשר להשתמש כדי לשנות את הכללים של המרת סכימה דטרמיניסטית.
סביבות עבודה להמרת מסדי נתונים מדור קודם מתאר את סביבות העבודה מדור קודם שלא מספקות תמיכה בעורך ה-SQL האינטראקטיבי.
יש סוגי נתונים מסוימים שלא נתמכים בהעברות מ-Oracle. מידע נוסף זמין במאמר מגבלות ידועות של סוגי נתונים.
אפשרויות אתחול של סכמת המקור
כדי להמיר את הסכימה של מסד הנתונים, Database Migration Service צריך תמונת מצב ראשונית של האובייקטים במסד הנתונים של המקור. אפשר לספק את תמונת המצב הזו בשתי דרכים:
- חיבור ישיר למסד נתונים: השירות Database Migration Service מתחבר ישירות למסד הנתונים הפעיל במקור באמצעות פרופיל חיבור, ומאחזר את הסכימה דרך חיבור לרשת.
- קובצי סכימה ב-Cloud Storage: אתם יכולים לחלץ את המטא-נתונים של הסכימה באופן מקומי באמצעות סקריפטים לחילוץ ש-Google מספקת, להעלות את הקבצים שנוצרו לקטגוריה של Cloud Storage ולהכין את סביבת העבודה בלי להתחבר למסד הנתונים של המקור.
במאמר יצירת סביבת עבודה להמרת מסדי נתונים מוסבר איך ליצור את סביבת העבודה להמרת מסדי נתונים באמצעות חיבור ישיר למסד נתונים או באמצעות קובצי סכימה ב-Cloud Storage.
סקירות כלליות של התקדמות ההמרה
סקירה כללית מקיפה על סביבות העבודה להמרת מסדי נתונים, שבה אפשר לקבל תובנות לגבי המספר הכולל של בעיות בהמרה שעדיין לא נפתרו או שכבר נפתרו, שיפורים בעזרת Gemini והתקינות הכללית של תהליך ההמרה.
אתם יכולים להשתמש בתצוגה הזו כדי לסנן אובייקטים בסכימה לפי סוג, חומרת הבעיה, הפעולות הנדרשות או סטטוס ההמרה.
איך משתמשים בסביבות עבודה להמרת מסדי נתונים
המרת קוד וסכימה דטרמיניסטית
כש יוצרים סביבת עבודה להמרת מסדי נתונים, שירות Database Migration Service מבצע מיד את המרת הסכימה הראשונית באמצעות קבוצה של כללי המרה דטרמיניסטיים, שבהם סוגי נתונים ואובייקטים ספציפיים של Oracle ממופים לסוגי נתונים ואובייקטים ספציפיים של PostgreSQL. התהליך הזה תומך בקבוצת משנה ספציפית מאוד של אובייקטים זמינים של מסדי נתונים של Oracle.
המרת קוד דטרמיניסטית תומכת באובייקטים הבאים של מסד נתונים של Oracle:
רכיבי סכימה נתמכים של Oracle
- מגבלות
- אינדקסים (רק אינדקסים שנוצרו באותה סכימה כמו הטבלה שלהם)
- תצוגות מהותיות
- סוגי אובייקטים (תמיכה חלקית)
- רצפים
- מילים נרדפות
- Tables
- תצוגות
רכיבי קוד נתמכים של Oracle
- טריגרים (ברמת הטבלה בלבד)
- חבילות
- פונקציות
- נהלים מאוחסנים
עורך SQL אינטראקטיבי
עורך ה-SQL האינטראקטיבי מאפשר לשנות את התחביר של PostgreSQL שהומר ישירות ב-Database Migration Service. אתם יכולים להשתמש בו כדי לפתור בעיות בהמרות או לשנות את הסכימה כך שתתאים יותר לצרכים שלכם. אי אפשר לשנות חלק מהאובייקטים בכלי העריכה המובנה.
אובייקטים של Oracle שאפשר לערוך
אחרי שממירים את הסכימה והקוד של מסד הנתונים, אפשר להשתמש בכלי העריכה האינטראקטיבי כדי לשנות את ה-SQL שנוצר לסוגים מסוימים של אובייקטים. האובייקטים הבאים של Oracle נתמכים בכלי העריכה:
- טריגרים של טבלאות (נדרשת הרשאה)
- תצוגות מהותיות
- חבילות
- פונקציות, תהליכים מאוחסנים
- מילים נרדפות
- תצוגות
- מגבלות
- אינדקסים
- רצפים
בנוסף, חלק מהאובייקטים מומרים אבל אי אפשר לערוך אותם ישירות ב-Database Migration Service. כדי לשנות אובייקטים כאלה, צריך לבצע את העדכונים ישירות במסד הנתונים של היעד אחרי החלת הסכימה והקוד שהומרו.
אובייקטים שלא נתמכים לעריכה:
- סוגי אובייקטים שמוגדרים על ידי המשתמש
- Tables
- סכימות
המרת קוד וסכימה מהר יותר בעזרת Gemini
Database Migration Service משלב את Gemini ב- Google Cloud בסביבות עבודה להמרת מסדי נתונים, כדי לעזור לכם לזרז ולשפר את תהליך ההמרה בתחומים הבאים:
כדי לשפר את התוצאות של ההמרה הדטרמיניסטית, אתם יכולים להשתמש בהמרה אוטומטית מבוססת-Gemini. כך תוכלו להשתמש ביכולות של ה-AI כדי לצמצם משמעותית את מספר ההתאמות הידניות שצריך לבצע בקוד PostgreSQL.
הערכות איכות שמבוססות על Gemini מאפשרות לוודא שהקוד שהומר הוא איכותי ופועל כמו שצריך. ההערכות האלה מנתחות את הקוד שהומר, ומספקות משוב על התקינות והפונקציונליות שלו בהשוואה לקוד המקור.
מספק תכונות להסבר על הקוד באמצעות עוזר ההמרה: קבוצה של הנחיות ייעודיות שיכולות לעזור לכם להבין טוב יותר את לוגיקת ההמרה, להציע תיקונים לבעיות בהמרה או לבצע אופטימיזציה של הקוד שהומר.
החלת תיקונים מהירים יותר על בעיות בהמרה באמצעות הצעות להמרת קוד ב-Gemini: מנגנון שבו מודל Gemini יכול ללמוד תוך כדי שאתם מתקנים בעיות בהמרה, ולהציע שינויים לאובייקטים פגומים אחרים בסביבת העבודה.
מידע נוסף על המרה באמצעות Gemini זמין בדפים הבאים:
קובצי מיפוי המרות
אתם יכולים להתאים אישית את הלוגיקה של ההמרות באמצעות קובץ מיפוי המרות. קובץ מיפוי ההמרות הוא קובץ טקסט שמכיל הוראות מדויקות (שנקראות הנחיות המרה) לגבי האופן שבו צריך להמיר את האובייקטים של Oracle לאובייקטים של PostgreSQL.
הוראות המרה נתמכות
Database Migration Service תומך בהוראות ההמרה הבאות לקובצי מיפוי המרות:
EXPORT_SCHEMA
EXPORT_SCHEMA היא הנחיה חובה בכל קובצי מיפוי ההמרות. ההוראה הזו נדרשת ב-Database Migration Service כדי לוודא שהסכימות של המקור מומרות לסכימות הנכונות של היעד.
חשוב לוודא שקובצי מיפוי ההמרות כוללים את השורה הזו:
EXPORT_SCHEMA 1
SCHEMA
Database Migration Service צריך להיות מסוגל לקבוע איזו סכימה מכילה את האובייקטים שצריך לשנות באמצעות הוראות ההמרה.
ההוראה SCHEMA גורמת לכל שאר הוראות ההתאמה האישית שסופקו בקובץ לחול על אובייקטים בסכימה הספציפית הזו.
- כשמשתמשים בהוראה הזו, גם סכימות אחרות שכלולות במסד הנתונים מומרות, אבל האובייקטים שלהן לא משתנים.
- אם כוללים את ההנחיה הזו בקובץ מיפוי ההמרות, כל ההתאמות האישיות חלות רק על אובייקטים שכלולים בסכימה הספציפית הזו.
- אם מדלגים על ההנחיה הזו, צריך לספק שמות אובייקטים שמוגדרים במלואם וכוללים את שם הסכימה של אובייקטים ששונו על ידי הנחיות המרה אחרות.
לדוגמה, במקום להשתמש ב-
SOURCE_TABLE_NAMEבהוראהREPLACE_TABLES, צריך להשתמש ב-"SCHEMA_NAME.SOURCE_TABLE_NAME". - כדי להתאים אישית אובייקטים בסכימות שונות, נסו את הפעולות הבאות:
- יוצרים קובצי מיפוי המרות נפרדים לסכימות אחרות ומעלים אותם לסביבת העבודה להמרת מסדי נתונים.
- צריך להשתמש בשמות אובייקטים מלאים שכוללים את שם הסכימה של אובייקטים שנמצאים בסכימות שונות מזו שציינתם בהוראה
SCHEMA.
צריך להשתמש בפורמט הבא:
SCHEMA SCHEMA_NAME
כאשר SCHEMA_NAME הוא שם הסכימה במסד הנתונים של המקור.
CASE_HANDLING
כברירת מחדל, Database Migration Service ממיר את כל שמות האובייקטים לאותיות קטנות.
אפשר להשתמש בהוראה CASE_HANDLING כדי לשנות את ההתנהגות הזו.
- ההוראה הזו לא מושפעת מההוראה
SCHEMA. הוא פועל באופן גלובלי ומשפיע על כל האובייקטים בסביבת העבודה להמרת מסדי נתונים. - ההוראות
RENAME_*,MOVE_*ו-REPLACE_*מקבלות עדיפות על פני ההוראהCASE_HANDLING, ומשנות את שמות האובייקטים בדיוק, בלי קשר למאפייןCASE_HANDLING. - אם ההוראה הזו קיימת בכמה קובצי תצורה עם ערכים סותרים, Database Migration Service יציג שגיאה במהלך ייבוא הסכימה.
צריך להשתמש בפורמט הבא:
CASE_HANDLING OPTION
כאשר OPTION יכול להיות אחד מהערכים הבאים:
-
UPPERCASE: המרת כל שמות האובייקטים לאותיות רישיות. -
LOWERCASE: המרת כל שמות האובייקטים לאותיות קטנות (פעולת ברירת המחדל). -
PRESERVE_ORIGINAL: שמירה על האותיות הרישיות המקוריות מסכימת המקור. האפשרות הזו שימושית אם האפליקציות שלכם משתמשות במזהים תלויי אותיות רישיות.
דוגמה:
CASE_HANDLING PRESERVE_ORIGINAL
GENERATE_MISSING_PK
טבלאות בלי מפתחות ראשיים לא מבטיחות רפליקציה עקבית. Database Migration Service מעביר רק טבלאות שיש להן מפתחות ראשיים. כברירת מחדל, סביבות העבודה להמרת מסדי נתונים של Database Migration Service יוצרות באופן אוטומטי את כל המפתחות הראשיים החסרים בטבלאות היעד כשאתם ממירים את קוד המקור והסכימה.
אפשר לשלוט ביצירה האוטומטית של מפתחות ראשיים באמצעות ההנחיה GENERATE_MISSING_PK. כדי להשבית את היצירה האוטומטית של מפתחות, מגדירים את ההוראה הזו לערך 0.
דוגמה:
GENERATE_MISSING_PK 0
ההנחיה הזו משפיעה על כל האובייקטים בסביבת עבודה ספציפית להמרת מסדי נתונים. אי אפשר להשבית את היצירה האוטומטית של מפתחות ראשיים רק בטבלה ספציפית.
Database Migration Service יכול להעביר רק טבלאות שיש להן אילוצי מפתח ראשי בגרסאות PostgreSQL שהומרו. אם משביתים את היצירה האוטומטית של מפתחות ראשיים, צריך ליצור באופן ידני מפתחות ראשיים או אילוצים ייחודיים בטבלאות שהומרו במסד הנתונים של היעד, אחרי שמחילים את הסכימה שהומרה. כדי לראות פקודות SQL לדוגמה, הרחיבו את הקטעים הבאים.
יצירת מפתחות ראשיים באמצעות עמודות קיימות
יכול להיות שכבר יש בטבלה מפתח ראשי לוגי שמבוסס על עמודה או על שילוב של עמודות. לדוגמה, יכול להיות שיש עמודות עם אינדקס או אילוץ ייחודי. אפשר להשתמש בעמודות האלה כדי ליצור מפתח ראשי חדש לטבלאות במסד הנתונים של המקור. לדוגמה:
ALTER TABLE TABLE_NAME ADD PRIMARY KEY (COLUMN_NAME);
יצירת מפתח ראשי באמצעות כל העמודות
אם אין לכם אילוץ קיים שיכול לשמש כמפתח ראשי, אתם יכולים ליצור מפתחות ראשיים באמצעות כל העמודות בטבלה. חשוב לוודא שלא חורגים מהאורך המקסימלי של המפתח הראשי שמותר באשכול PostgreSQL. לדוגמה:
ALTER TABLE TABLE_NAME ADD PRIMARY KEY (COLUMN_NAME_1, COLUMN_NAME_2, COLUMN_NAME_3, ...);
כשיוצרים מפתח ראשי מורכב כזה, צריך לציין במפורש את כל שמות העמודות שבהן רוצים להשתמש. אי אפשר להשתמש בהצהרה כדי לאחזר את כל שמות העמודות למטרה הזו.
יצירת אילוץ ייחודי באמצעות העמודה המדומה ROWID
מסדי נתונים של Oracle משתמשים בעמודה המדומה
ROWID כדי לאחסן את המיקום של כל שורה בטבלה. כדי להעביר טבלאות Oracle שאין להן מפתחות ראשיים, אפשר להוסיף עמודת ROWID במסד הנתונים של PostgreSQL ביעד. Database Migration Service מאכלס את העמודה בערכים המספריים התואמים מהעמודה המדומה ROWID של Oracle במקור.
כדי להוסיף את העמודה ולהגדיר אותה כמפתח הראשי, מריצים את הפקודה הבאה:
ALTER TABLE TABLE_NAME ADD COLUMN rowid numeric(33,0) NOT NULL; CREATE SEQUENCE TABLE_NAME_rowid_seq INCREMENT BY -1 START WITH -1 OWNED BY TABLE_NAME.rowid; ALTER TABLE TABLE_NAME ALTER COLUMN rowid SET DEFAULT nextval('TABLE_NAME_rowid_seq'); ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_DISPLAY_NAME PRIMARY KEY (rowid);
שינוי שם של אובייקטים (RENAME_*)
אתם יכולים לשנות את השמות של אובייקטים שונים במסד הנתונים במהלך ההמרה. Database Migration Service מעדכן באופן אוטומטי את כל ההפניות בקוד (בתצוגות, בפרוצדורות מאוחסנות, בפונקציות וכו') כדי להשתמש בשמות החדשים.
תחביר כללי
RENAME_OBJECT_TYPE SOURCE_NAME1:DESTINATION_NAME1 SOURCE_NAME2:DESTINATION_NAME2 ...
שיקולים חשובים
-
ההוראות של
RENAME_*תלויות אותיות רישיות בשם של אובייקט היעד, והן מקבלות עדיפות על פני ההוראהCASE_HANDLING. לדוגמה, אם משתמשים בשתי ההוראות:SCHEMA MySchema CASE_HANDLING PRESERVE_ORIGINAL # Destination objects are renamed exactly # to 'SoMe_tAbLe' and 'RenamedView', respecting the case # despite the CASE_HANDLING directive RENAME_TABLES some_table:SoMe_tAbLe RENAME_VIEWS MyView:RenamedView
-
ב-
SOURCE_NAME, תמיד צריך להתייחס לשם האובייקט המקורי, גם אם משתמשים בהוראות אחרות כמוMOVE_*. לדוגמה, אם רוצים לשנות את השם של אחד מאובייקטי התצוגה ולהעביר אותו לסכימה חדשה, צריך להתייחס לשם התצוגה המקורי בשתי ההוראות:RENAME_VIEWS MyView:MyRenamedView MOVE_VIEWS MyView:MyOtherSchema
- ההוראה
RENAME_TABLESמבטלת את ההוראהREPLACE_TABLESבקובץ יחיד. אם רוצים גם לשנות את השם של הטבלה וגם להעביר אותה, מומלץ להשתמש במקום זאת בהוראהMOVE_*. -
הפורמט המלא של המשתנה
SOURCE_NAMEתלוי בשאלה אם משתמשים גם בהוראהSCHEMA:- עם ההוראה
SCHEMA: משתמשים בשמות לא מוגדרים, לדוגמהMyTable. - בלי ההוראה
SCHEMA: משתמשים בשמות המלאים, לדוגמהMySchema.MyTable.
- עם ההוראה
הוראות RENAME_* נתמכות
-
RENAME_SCHEMA: שינוי שם של סכימה.
קובץ תצורה אחד יכול להכיל רק הוראתRENAME_SCHEMAאחת. אם מספקים את ההוראהSCHEMA,RENAME_SCHEMAיכול לשנות את השם רק של הסכימה הספציפית הזו. -
RENAME_TABLES: שינוי שמות של טבלאות. מבטל את ההגדרה שלREPLACE_TABLESבאותו קובץ. -
RENAME_COLUMNS: שינוי שמות של עמודות בטבלאות. מבטלת את ההוראהREPLACE_COLSבאותו קובץ. צריך להשתמש בפורמט הבא:RENAME_COLUMNS TABLE1.SRC_COL:DEST_COL TABLE2.SRC_COL:DEST_COL
אם משתמשים בהוראה
SCHEMA, צריך להשתמש בשמות טבלאות לא מוגדרים. אם לא משתמשים בהוראהSCHEMA, צריך לכלול את שמות הטבלאות המלאים, כמו SCHEMA.TABLE1. RENAME_VIEWSRENAME_MATERIALIZED_VIEWSRENAME_SEQUENCESRENAME_FUNCTIONSRENAME_STORED_PROCEDURESRENAME_TRIGGERS-
RENAME_PACKAGES: Database Migration Service ממיר חבילות של Oracle לסכימות של PostgreSQL. אם הסכימה מכילה חבילות עם שמות זהים, יכול להיות שקוד PostgreSQL ייתקל בהתנגשויות שמות כשהוא ינסה ליצור שתי סכימות עם אותו שם. אפשר להשתמש בהוראה הזו כדי למנוע התנגשויות כאלה.לדוגמה, אם יש לכם חבילות כמו
SALES.REPORTING_PKGו-HR.REPORTING_PKG, אתם יכולים לשנות את השמות שלהן לשמות נפרדים:RENAME_PACKAGES SALES.UTILS:SALES_UTILS RENAME_PACKAGES HR.UTILS:HR_UTILS
RENAME_USER_DEFINED_TYPESכינוי זמין:
RENAME_UDTS.
אובייקטים בתנועה (MOVE_*)
אתם יכולים להעביר אובייקטים לסכימות שונות במסד הנתונים של היעד. האפשרות הזו שימושית לארגון מחדש של מבנה מסד הנתונים במהלך ההעברה. Database Migration Service מעדכן באופן אוטומטי את כל ההפניות לקוד בתצוגות, בפרוצדורות מאוחסנות, בפונקציות וכו'.
תחביר כללי
MOVE_OBJECT_TYPE SOURCE_NAME1:DESTINATION_SCHEMA1 SOURCE_NAME2:DESTINATION_SCHEMA2 ...
שיקולים חשובים
-
ב-
SOURCE_NAME, תמיד צריך להתייחס לשם האובייקט המקורי, גם אם משתמשים בהוראות אחרות כמוRENAME_*. לדוגמה, אם רוצים לשנות את השם של אחד מאובייקטי התצוגה ולהעביר אותו לסכימה חדשה, צריך להתייחס לשם התצוגה המקורי בשתי ההוראות:RENAME_VIEWS MyView:MyRenamedView MOVE_VIEWS MyView:MyOtherSchema
- ההוראה מצפה רק לשם של
DESTINATION_SCHEMA, ולא לשם האובייקט המלא. -
הפורמט המלא של המשתנה
SOURCE_NAMEתלוי בשאלה אם משתמשים גם בהוראהSCHEMA:- עם ההוראה
SCHEMA: משתמשים בשמות לא מוגדרים, לדוגמהMyTable. - בלי ההוראה
SCHEMA: משתמשים בשמות המלאים, לדוגמהMySchema.MyTable.
- עם ההוראה
הוראות MOVE_* נתמכות
-
MOVE_TABLES: העברת טבלאות לסכימה אחרת. ההגדרה הזו מקבלת עדיפות על פניREPLACE_TABLESלשינויים בסכימה בקובץ תצורה יחיד. MOVE_VIEWSMOVE_MATERIALIZED_VIEWSMOVE_SEQUENCESMOVE_FUNCTIONSMOVE_STORED_PROCEDURESMOVE_USER_DEFINED_TYPESכינוי זמין:
MOVE_UDTS.
דוגמה: ארגון מחדש של סכימות
SCHEMA LegacyApp # Moves the 'LegacyApp.Users' and 'LegacyApp.Orders' tables # to the 'data' schema. MOVE_TABLES Users:data Orders:data # Moves the 'LegacyApp.CreateUser' and 'LegacyApp.ProcessOrder' # stored procedures to the 'api' schema MOVE_STORED_PROCEDURES CreateUser:api ProcessOrder:api # Moves the 'LegacyApp.SalesSummary' views to the 'reporting' schema MOVE_VIEWS SalesSummary:reporting
DATA_TYPE
אתם יכולים להשתמש בהוראה הזו כדי למפות באופן מפורש כל סוג נתונים נתמך בין התחביר של Oracle לבין התחביר של PostgreSQL. ההוראה הזו מצפה לרשימה של מיפויים שמופרדים בפסיקים. צריך לספק את כל ההגדרה בשורה אחת, אבל אתם כוללים כמה הוראות DATA_TYPE בקובץ התצורה. צריך להשתמש בפורמט הבא:
DATA_TYPE ORACLE_DATA_TYPE1:PGSQL_DATA_TYPE1 DATA_TYPE ORACLE_DATA_TYPE2:PGSQL_DATA_TYPE2...
כאשר ORACLE_DATA_TYPE ו-PGSQL_DATA_TYPE הם סוגי נתונים שנתמכים בגרסאות Oracle ו-PostgreSQL שבהן אתם משתמשים בהעברה. למידע על הגרסאות הנתמכות, קראו את הסקירה הכללית של התרחיש.
דוגמה:
DATA_TYPE REAL:double precision,SMALLINT:integer
למידע נוסף על סוגי הנתונים של Oracle ו-PostgreSQL, קראו את המאמרים הבאים:
- סוגי הנתונים של Oracle במאמרי העזרה של Oracle.
- סוגי נתונים של PostgreSQL במסמכי התיעוד של PostgreSQL.
MODIFY_TYPE
ההנחיה MODIFY_TYPE מאפשרת לכם לקבוע לאיזה סוג נתונים Database Migration Service ימיר עמודה ספציפית בטבלת המקור.
ההנחיה הזו מצפה לרשימה של מיפויים שמופרדים בפסיקים.
צריך לספק את כל ההגדרה בשורה אחת, אבל אתם כוללים כמה הוראות MODIFY_TYPE בקובץ התצורה.
צריך להשתמש בפורמט הבא:
MODIFY_TYPE SOURCE_TABLE_NAME1:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE MODIFY_TYPE SOURCE_TABLE_NAME2:COLUMN_NAME:EXPECTED_END_RESULT_DATA_TYPE...
כאשר:
- SOURCE_TABLE_NAME הוא שם הטבלה שמכילה את העמודה שבה רוצים לשנות את סוג הנתונים.
- COLUMN_NAME הוא שם העמודה שבה רוצים להתאים אישית את מיפוי ההמרות.
- EXPECTED_END_RESULT_DATA_TYPE הוא סוג הנתונים של PostgreSQL שרוצים להשתמש בו בעמודה שהומרה.
דוגמה:
MODIFY_TYPE events:dates_and_times:DATETIME,users:pseudonym:TEXT
PG_INTEGER_TYPE
כברירת מחדל,Database Migration Service ממיר את הסוגים של NUMBER(p,s) לסוג DECIMAL(p,s) של PostgreSQL.
אפשר לשנות את ההתנהגות הזו באמצעות ההוראה PG_INTEGER_TYPE. מגדירים את הערך שלו ל-1 ומאלצים את כל סוגי ה-NUMBER עם דיוק וקנה מידה (NUMBER(p,s)) להמיר לסוגי smallint, integer או bigint של PostgreSQL, על סמך מספר הספרות של הדיוק.
צריך לכלול את ההגדרה הבאה בקובץ מיפוי ההמרות:
PG_INTEGER_TYPE 1
PG_NUMERIC_TYPE
מגדירים את ההוראה הזו לערך 1 אם רוצים להמיר את כל סוגי ה-NUMBER עם דיוק וקנה מידה (NUMBER(p,s)) לסוגי real או float של PostgreSQL (על סמך מספר הספרות של הדיוק).
אם מגדירים את ההוראה הזו לערך 0, הערכים של NUMBER(p,s) נשמרים בדיוק כמו שהם במקור ומשתמשים בסוג הנתונים הפנימי של PostgreSQL.
צריך לכלול את ההגדרה הבאה בקובץ מיפוי ההמרות:
PG_NUMERIC_TYPE 1
DEFAULT_NUMERIC
ההמרה שמוגדרת כברירת מחדל לערכי NUMBER בלי דיוק משתנה אם משתמשים גם בהוראה
PG_INTEGER_TYPE:
- אם משתמשים בהוראה
PG_INTEGER, ערכיNUMBERללא דיוק מומרים לערכיDECIMAL. - אם לא משתמשים בהוראה
PG_INTEGER, ערכיNUMBERללא דיוק מומרים לערכיBIGINT.
אפשר לשנות את ההתנהגות הזו ולהשתמש בהוראה DEFAULT_NUMERIC כדי לציין באיזה סוג נתונים צריך להשתמש לסוגי NUMBER בלי נקודות דיוק שצוינו.
צריך להשתמש בפורמט הבא:
DEFAULT_NUMERIC POSTGRESQL_NUMERIC_DATA_TYPE
כאשר POSTGRESQL_NUMERIC_DATA_TYPE הוא אחד מהערכים הבאים: integer, smallint, bigint.
דוגמה:
DEFAULT_NUMERIC integer
REPLACE_COLS
אפשר להשתמש בהוראה REPLACE_COLS כדי לשנות את שמות העמודות בסכימה שהומרה. ההנחיה הזו מצפה לרשימה של מיפויים שמופרדים בפסיקים.
צריך להשתמש בפורמט הבא:
REPLACE_COLS SOURCE_TABLE_NAME1(SOURCE1_TABLE1_COLUMN_NAME1:DESTINATION_TABLE1_COLUMN_NAME1,SOURCE_TABLE1_COLUMN_NAME2:DESTINATION_TABLE1_COLUMN_NAME2),SOURCE_TABLE_NAME2(SOURCE_TABLE2_COLUMN_NAME1:DESTINATION_TABLE2_COLUMN_NAME1,SOURCE_TABLE2_COLUMN_NAME2:DESTINATION_TABLE2_COLUMN_NAME2)...
כאשר:
- SOURCE_TABLE_NAME הוא שם הטבלה שמכילה את העמודה שאת השם שלה רוצים לשנות. אם לא משתמשים בהוראה SCHEMA, צריך להשתמש בשם הטבלה המלא:
SCHEMA_NAME.SOURCE_TABLE_NAME - SOURCE_COLUMN_NAME הוא שם העמודה במקור שאת השם שלה רוצים לשנות.
- DESTINATION_COLUMN_NAME הוא השם החדש של העמודה שבה רוצים להשתמש בסכימה שהומרה.
דוגמה:
REPLACE_COLS events(dates_and_times:event_dates),users(pseudonym:nickname)
REPLACE_TABLES
אפשר להשתמש בהוראה REPLACE_TABLES כדי לשנות את השמות של הטבלאות או להעביר אותן לסכימה חדשה. ההוראה הזו מצפה לרשימה של מיפויים שמופרדים ברווחים. כדי לקבל מידע נוסף על התחביר של כל תרחיש לדוגמה, הרחיבו את הקטעים הבאים.
אם לא משתמשים בהוראה SCHEMA, צריך להשתמש בשמות המלאים של הטבלאות במירכאות גם למשתני המקור וגם למשתני היעד:
"SCHEMA_NAME.SOURCE_TABLE_NAME""SCHEMA_NAME.DESTINATION_TABLE_NAME"
שינוי שמות של טבלאות
כדי לשנות את השמות של הטבלאות בסכימה שהומרה, משתמשים בפורמט הבא:
REPLACE_TABLES SOURCE_TABLE_NAME1:DESTINATION_TABLE_NAME1 SOURCE_TABLE_NAME2:DESTINATION_TABLE_NAME2
כאשר:
- SOURCE_TABLE_NAME הוא השם של טבלת המקור שרוצים לשנות בסכימה שהומרה.
- DESTINATION_TABLE_NAME הוא השם החדש של הטבלה שבה רוצים להשתמש בסכימה שהומרה.
דוגמה:
REPLACE_TABLES "events:login_events" "users:platform_users"
העברת טבלאות בין סכימות
אפשר להשתמש בהוראה הזו כדי להעביר טבלאות בין סכימות, על ידי הוספת הקידומת של הסכימה לשם הטבלה החדש. אפשר להשתמש במנגנון הזה בלי קשר לאופן שבו משתמשים בהנחיה SCHEMA בקובץ ההמרות כולו. לדוגמה:
REPLACE_TABLES "events:NEW_SCHEMA_NAME.login_events"
כינויים להתאמה אישית של סוגי נתונים
כשמשתמשים בהוראות המרה כדי לשנות את האופן שבו Database Migration Service ממיר סוגי נתונים שונים (לדוגמה, באמצעות ההוראות
DATA_TYPE,
MODIFY_TYPE או
PG_NUMERIC_TYPE), אפשר להשתמש בכינויים במקום בסוגי הנתונים של SQL במקור.
כדי לראות את רשימת הכינויים של סוגי הנתונים שנתמכים ב-Database Migration Service, הרחיבו את הקטע הבא.
כינויים של סוגי נתונים
| כינוי | ההמרה לסוג PostgreSQL |
|---|---|
bigint, int8 |
BIGINT |
bool, boolean |
BOOLEAN |
bytea |
BYTEA |
char, character |
CHAR |
character varying, varchar |
VARCHAR |
date |
DATE |
decimal, numeric |
DECIMAL |
double precision, float8 |
DOUBLE PRECISION |
real, float4 |
REAL |
int, integer, int4 |
INTEGER |
int2 |
SMALLINT |
interval |
INTERVAL |
json |
JSON |
smallint |
SMALLINT |
text |
TEXT |
time |
TIME |
timestamp |
TIMESTAMP |
timestamptz |
TIMESTAMPTZ |
timetz |
TIMETZ |
uuid |
UUID |
XML |
XML |
קובץ מיפוי המרות לדוגמה
הנה קובץ מיפוי המרות לדוגמה שמשתמש בחלק מההוראות הנתמכות להמרת סכימה:
EXPORT_SCHEMA 1 SCHEMA root # Preserve original casing for all objects CASE_HANDLING PRESERVE_ORIGINAL # Data type conversions PG_NUMERIC_TYPE 0 PG_INTEGER_TYPE 1 DEFAULT_NUMERIC integer DATA_TYPE NUMBER(4\,0):integer MODIFY_TYPE events:dates_and_times:TIMESTAMP # Renaming objects using the RENAME_* directives # These allow case-sensitive destination names RENAME_TABLES events:LoginEvents users:PlatformUsers RENAME_COLUMNS events.dates_and_times:EventDates users.pseudonym:Nickname RENAME_VIEWS InternalReport:FinInternalReport # Moving objects to new schemas using the MOVE_* directives MOVE_TABLES audit_log:archive MOVE_VIEWS InternalReport:reporting
אלה התוצאות של השימוש בקובץ הזה:
-
EXPORT_SCHEMA 1היא הוראה חובה. -
SCHEMA rootגורם להנחיות האחרות לחול על אובייקטים בסכימהroot, אלא אם משתמשים בשמות מלאים. CASE_HANDLING PRESERVE_ORIGINALמבטיח שכל שמות האובייקטים מהסכימהrootשל המקור ישמרו על האותיות הרישיות המקוריות שלהם ביעד (אלא אם הם הוחלפו על ידי הוראתRENAME_*).-
PG_INTEGER_TYPE 1גורם ל-Database Migration Service להמיר את כל סוגי הנתונים המספריים של Oracle שנמצאים בטבלאות בסכימהrootלסוגים ספציפיים ל-PostgreSQL, במקום לסוגים מספריים ניידים של ANSI. -
DEFAULT_NUMERIC integerגורם ל-Database Migration Service להמיר ערכיNUMBERשאין להם נקודת דיוק מוגדרת לסוגINTEGERשל PostgreSQL. DATA_TYPE NUMBER(4\,0):integerגורם ל-Database Migration Service להמיר ערכיNUMBER(4,0)ספציפיים ל-INTEGERשל PostgreSQL.- ההוראה
MODIFY_TYPE events:dates_and_times:TIMESTAMPגורמת ל-Database Migration Service להמיר את הנתונים בעמודהdates_and_timesבטבלת המקורeventsבאופן ספציפי לסוגTIMESTAMPשל PostgreSQL. RENAME_TABLES events:LoginEvents users:PlatformUsersמשנה את שמות הטבלאות, תוך שמירה על האותיות הרישיות שצוינו:- השם של הטבלה
eventsמשתנה ל-LoginEvents. - השם של הטבלה
usersמשתנה ל-PlatformUsers.
- השם של הטבלה
RENAME_COLUMNS events.dates_and_times:EventDates user.pseudonym:Nicknameמשנה את שמות העמודות, תוך שמירה על אותיות רישיות או קטנות ביעד:- בטבלה
LoginEvents(השם המקוריevents), השם של העמודהdates_and_timesהשתנה ל-EventDates. - ב-
PlatformUsers(השם המקוריusers), השם של העמודהpseudonymהשתנה ל-Nickname.
- בטבלה
-
RENAME_VIEWS InternalReport:FinInternalReportמשנה את השם של התצוגהInternalReportל-FinInternalReport. - הפקודה
MOVE_TABLES audit_log:archiveמעבירה את הטבלהaudit_logמהסכימהrootלסכימהarchive. -
MOVE_VIEWS InternalReport:reportingמעביר את התצוגהInternalReportלסכימהreporting. גם השם של התצוגה הזו משתנה ל-FinInternalReportבגלל ההוראהRENAME_VIEWS. Database Migration Service מטפל ביחסי התלות: קודם משנים את שם האובייקט ואז מעבירים אותו.
סביבות עבודה מדור קודם להמרת מסדי נתונים
סביבות עבודה מדור קודם להמרת סכימות הן סביבות עבודה ישנות ומוגבלות יותר. בסביבות עבודה מדור קודם להמרת מסדי נתונים אין תמיכה בתכונות המרה משופרות של Gemini או בעורך SQL אינטראקטיבי. אפשר להשתמש בהם רק כדי להמיר את סכימת המקור באמצעות כלי ההעברה Ora2Pg.
אנחנו לא ממליצים להשתמש בסביבות עבודה להמרת מסדי נתונים מדור קודם לצורך העברות. אם אתם צריכים להשתמש בסביבות עבודה מדור קודם להמרת מסדי נתונים, קראו את המאמר עבודה עם סביבות עבודה מדור קודם להמרת מסדי נתונים.
המאמרים הבאים
מידע נוסף על השימוש בסביבות עבודה להמרת מסדי נתונים: