שחזור תמונות מצב של טבלה

במאמר הזה מוסבר איך ליצור טבלה שאפשר לכתוב בה מתוך תמונת מצב של טבלה באמצעות מסוף Google Cloud , שאילתת CREATE TABLE CLONE, פקודת bq cp או jobs.insert API. המאמר הזה מיועד למשתמשים שמכירים את תמונות המצב של הטבלאות.

הרשאות ותפקידים

בקטע הזה מתוארות ההרשאות של ניהול זהויות והרשאות גישה (IAM) שנדרשות כדי ליצור טבלה שאפשר לכתוב בה מתוך תמונת מצב של טבלה, והתפקידים המוגדרים מראש ב-IAM שמעניקים את ההרשאות האלה.

הרשאות

כדי ליצור טבלה שאפשר לכתוב בה מתוך תמונת מצב של טבלה, אתם צריכים את ההרשאות הבאות:

הרשאה משאב
כל התנאים הבאים:

bigquery.tables.get
bigquery.tables.getData
bigquery.tables.restoreSnapshot
תמונת המצב של הטבלה שרוצים להעתיק לטבלה שאפשר לכתוב בה.
bigquery.tables.create מערך הנתונים שמכיל את טבלת היעד.

תפקידים

התפקידים המוגדרים מראש ב-BigQuery שכוללים את ההרשאות הנדרשות הם:

תפקיד משאב
אחת מהאפשרויות הבאות:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
תמונת המצב של הטבלה שרוצים להעתיק לטבלה שאפשר לכתוב בה.
אחת מהאפשרויות הבאות:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
מערך הנתונים שמכיל את טבלת היעד.

שחזור תמונת מצב של טבלה

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

שחזור לטבלה חדשה

כדי לשחזר תמונת מצב של טבלה לטבלה חדשה, אפשר להשתמש באחת מהאפשרויות הבאות:

המסוף

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על כלי הניתוחים:

    כפתור מודגש לחלונית הסייר.

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

  3. בחלונית Explorer מרחיבים את הפרויקט, לוחצים על Datasets ואז לוחצים על מערך הנתונים שמכיל את תמונת המצב של הטבלה שרוצים לשחזר.

  4. לוחצים על סקירה כללית > טבלאות ואז על השם של תמונת מצב של הטבלה.

  5. בחלונית של תמונת מצב של הטבלה שמופיעה, לוחצים על עדכון שחזור.

    שחזור טבלה מתמונת מצב

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

  7. לוחצים על Save.

SQL

משתמשים בהצהרת ה-DDL‏ CREATE TABLE CLONE:

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. מזינים את ההצהרה הבאה בעורך השאילתות:

    CREATE TABLE TABLE_PROJECT_ID.TABLE_DATASET_NAME.NEW_TABLE_NAME
    CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;

    מחליפים את מה שכתוב בשדות הבאים:

    • TABLE_PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את הטבלה החדשה.
    • TABLE_DATASET_NAME: השם של מערך הנתונים שבו רוצים ליצור את הטבלה החדשה.
    • NEW_TABLE_NAME: השם של הטבלה החדשה.
    • SNAPSHOT_PROJECT_ID: מזהה הפרויקט שמכיל את התמונה שממנה אתם משחזרים.
    • SNAPSHOT_DATASET_NAME: השם של מערך הנתונים שמכיל את קובץ ה-snapshot שממנו אתם משחזרים.
    • SNAPSHOT_NAME: השם של קובץ ה-snapshot שממנו אתם משחזרים.

  3. לוחצים על הפעלה.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

מזינים את הפקודה הבאה ב-Cloud Shell:

כניסה ל-Cloud Shell

bq cp \
--restore \
--no_clobber \
SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME \
TABLE_PROJECT_ID:TABLE_DATASET_NAME.NEW_TABLE_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • SNAPSHOT_PROJECT_ID: מזהה הפרויקט שמכיל את התמונה שממנה אתם משחזרים.
  • SNAPSHOT_DATASET_NAME: השם של מערך הנתונים שמכיל את קובץ ה-snapshot שממנו אתם משחזרים.
  • SNAPSHOT_NAME: השם של קובץ ה-snapshot שממנו אתם משחזרים.
  • TABLE_PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את הטבלה החדשה.
  • TABLE_DATASET_NAME: השם של מערך הנתונים שבו רוצים ליצור את הטבלה החדשה.
  • NEW_TABLE_NAME: השם של הטבלה החדשה.

הדגל --no_clobber מורה לפקודה להיכשל אם טבלת היעד כבר קיימת.

API

מבצעים קריאה ל-method‏ jobs.insert עם הפרמטרים הבאים:

פרמטר ערך
projectId מזהה הפרויקט לחיוב עבור הפעולה הזו.
גוף הבקשה
{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "SNAPSHOT_PROJECT_ID",
          "datasetId": "SNAPSHOT_DATASET_NAME",
          "tableId": "SNAPSHOT_NAME"
        }
      ],
      "destinationTable": {
        "projectId": "TABLE_PROJECT_ID",
        "datasetId": "TABLE_DATASET_NAME",
        "tableId": "NEW_TABLE_NAME"
      },
      "operationType": "RESTORE",
      "writeDisposition": "WRITE_EMPTY"
    }
  }
}

מחליפים את מה שכתוב בשדות הבאים:

  • SNAPSHOT_PROJECT_ID: מזהה הפרויקט שמכיל את התמונה שממנה אתם משחזרים.
  • SNAPSHOT_DATASET_NAME: השם של מערך הנתונים שמכיל את קובץ ה-snapshot שממנו אתם משחזרים.
  • SNAPSHOT_NAME: השם של קובץ ה-snapshot שממנו אתם משחזרים.
  • TABLE_PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את הטבלה החדשה.
  • TABLE_DATASET_NAME: השם של מערך הנתונים שבו רוצים ליצור את הטבלה החדשה.
  • NEW_TABLE_NAME: השם של הטבלה החדשה.

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

החלפת טבלה קיימת

אפשר להחליף טבלה קיימת בתמונת מצב של טבלה באמצעות אחת מהאפשרויות הבאות:

המסוף

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על כלי הניתוחים:

    כפתור מודגש לחלונית הסייר.

  3. בחלונית Explorer מרחיבים את הפרויקט, לוחצים על Datasets ואז לוחצים על מערך הנתונים שמכיל את תמונת המצב של הטבלה שרוצים לשחזר.

  4. לוחצים על סקירה כללית > טבלאות ואז על השם של תמונת מצב של הטבלה.

  5. בחלונית של תמונת המצב של הטבלה שמופיעה, לוחצים על שחזור.

    שחזור טבלה מתמונת מצב

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

  7. בוחרים באפשרות החלפת הטבלה אם היא קיימת.

  8. לוחצים על Save.

SQL

משתמשים בהצהרת ה-DDL‏ CREATE TABLE CLONE:

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה ל-BigQuery

  2. מזינים את ההצהרה הבאה בעורך השאילתות:

    CREATE OR REPLACE TABLE TABLE_PROJECT_ID.TABLE_DATASET_NAME.TABLE_NAME
    CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;

    מחליפים את מה שכתוב בשדות הבאים:

    • TABLE_PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את הטבלה החדשה.
    • TABLE_DATASET_NAME: השם של מערך הנתונים שמכיל את הטבלה שרוצים להחליף.
    • TABLE_NAME: שם הטבלה שרוצים להחליף.
    • SNAPSHOT_PROJECT_ID: מזהה הפרויקט שמכיל את התמונה שממנה אתם משחזרים.
    • SNAPSHOT_DATASET_NAME: השם של מערך הנתונים שמכיל את קובץ ה-snapshot שממנו אתם משחזרים.
    • SNAPSHOT_NAME: השם של קובץ ה-snapshot שממנו אתם משחזרים.

  3. לוחצים על הפעלה.

מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.

BQ

מזינים את הפקודה הבאה ב-Cloud Shell:

כניסה ל-Cloud Shell

bq cp \
--restore \
--force \
SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME \
TABLE_PROJECT_ID:TABLE_DATASET_NAME.TABLE_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • SNAPSHOT_PROJECT_ID: מזהה הפרויקט שמכיל את התמונה שממנה אתם משחזרים.
  • SNAPSHOT_DATASET_NAME: השם של מערך הנתונים שמכיל את קובץ ה-snapshot שממנו אתם משחזרים.
  • SNAPSHOT_NAME: השם של קובץ ה-snapshot שממנו אתם משחזרים.
  • TABLE_PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את הטבלה החדשה.
  • TABLE_DATASET_NAME: השם של מערך הנתונים שמכיל את הטבלה שרוצים להחליף.
  • TABLE_NAME: שם הטבלה שרוצים להחליף.

API

מבצעים קריאה ל-method‏ jobs.insert עם הפרמטרים הבאים:

פרמטר ערך
projectId מזהה הפרויקט לחיוב עבור הפעולה הזו.
גוף הבקשה
{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "SNAPSHOT_PROJECT_ID",
          "datasetId": "SNAPSHOT_DATASET_NAME",
          "tableId": "SNAPSHOT_NAME"
        }
      ],
      "destinationTable": {
        "projectId": "TABLE_PROJECT_ID",
        "datasetId": "TABLE_DATASET_NAME",
        "tableId": "TABLE_NAME"
      },
      "operationType": "RESTORE",
      "writeDisposition": "WRITE_TRUNCATE"
    }
  }
}

מחליפים את מה שכתוב בשדות הבאים:

  • SNAPSHOT_PROJECT_ID: מזהה הפרויקט שמכיל את התמונה שממנה אתם משחזרים.
  • SNAPSHOT_DATASET_NAME: השם של מערך הנתונים שמכיל את קובץ ה-snapshot שממנו אתם משחזרים.
  • SNAPSHOT_NAME: השם של קובץ ה-snapshot שממנו אתם משחזרים.
  • TABLE_PROJECT_ID: מזהה הפרויקט שבו רוצים ליצור את הטבלה החדשה.
  • TABLE_DATASET_NAME: השם של מערך הנתונים שמכיל את הטבלה שרוצים להחליף.
  • TABLE_NAME: שם הטבלה שרוצים להחליף.

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

המאמרים הבאים