ייבוא קובץ SQL

בדף הזה מוסבר איך לייבא נתונים מקובץ SQL שמאוחסן בקטגוריה של Cloud Storage לאשכול AlloyDB ל-PostgreSQL. קבצי SQL הם קובצי טקסט פשוט עם רצף של פקודות SQL.

אפשר לבטל את הייבוא של נתונים לאשכולות AlloyDB. מידע נוסף זמין במאמר בנושא ביטול פעולת ייבוא.

כשמייבאים קובצי SQL dump, צריך לוודא שגרסת PostgreSQL שממנה נוצר ה-dump תואמת לגרסת PostgreSQL של מכונת AlloyDB. הייבוא של קובץ dump מגרסה חדשה יותר לגרסה ישנה יותר עלול להיכשל בגלל תחביר SQL לא תואם.

לפני שמתחילים

לפני שמתחילים בפעולת ייבוא:

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

תפקידים והרשאות שנדרשים לייבוא ל-AlloyDB

כדי לייבא נתונים מ-Cloud Storage אל AlloyDB, למשתמש שמבצע את הייבוא צריך להיות אחד מהתפקידים הבאים:

בנוסף, לחשבון השירות של אשכול AlloyDB צריך להיות אחד מהתפקידים הבאים:

  • תפקיד IAM‏ storage.objectViewer
  • תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
    • storage.objects.get

לקבלת עזרה בנושא תפקידי IAM, אפשר לעיין במאמר ניהול זהויות והרשאות גישה.

ייבוא קובץ SQL לאשכולות AlloyDB

כדי לייבא נתונים לאשכול AlloyDB באמצעות קובץ SQL, פועלים לפי השלבים הבאים:

המסוף

  1. עוברים לדף Clusters.

    כניסה לדף Clusters

  2. לוחצים על שם האשכול כדי לפתוח את הדף סקירה כללית של האשכול.

  3. לוחצים על Import.

  4. בקטע פורמט קובץ, בוחרים באפשרות SQL.

  5. בקטע בחירת קובץ מקור, בוחרים אם להעלות קבצים מהמחשב או לבחור קובץ ממיקום באחסון בענן.

    1. כדי להעלות קובץ מהמחשב:

      1. בוחרים באפשרות העלאת קבצים מהמחשב.
      2. לוחצים על Browse (עיון) לצד Select local file (בחירת קובץ מקומי) כדי לבחור קובץ SQL מהמחשב המקומי.
      3. לוחצים על Browse (עיון) לצד Select Cloud Storage location (בחירת מיקום ב-Cloud Storage) כדי לבחור מיקום ב-Cloud Storage לאחסון הקובץ המקומי שהועלה.
      4. לוחצים על העלאה כדי להעלות את הקובץ.
    2. כדי לבחור קובץ SQL שקיים בקטגוריה של Cloud Storage, מבצעים את הפעולות הבאות:

      1. בוחרים באפשרות בחירת קובץ מ-Google Cloud Storage.
      2. לוחצים על Browse לצד bucket-name/file-name כדי לבחור קובץ SQL מקטגוריה של Cloud Storage.
  6. בתפריט הנפתח מסד נתונים, בוחרים את מסד הנתונים שאליו רוצים לייבא את הנתונים.

    כתוצאה מכך, מערכת AlloyDB מריצה את ההצהרה USE DATABASE לפני הייבוא. אם קובץ SQL מוכן לשימוש כולל הצהרת USE DATABASE, היא מבטלת את ההגדרה של מסד הנתונים שהגדרתם במסוף. Google Cloud

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

  8. כדי להתחיל את פעולת הייבוא, לוחצים על ייבוא.

gcloud

  1. יצירת קטגוריה של Cloud Storage
  2. מעלים את קובץ ה-SQL לקטגוריה. לקבלת עזרה בהעלאת קבצים למאגרי מידע, ראו העלאת אובייקטים.

  3. משתמשים בפקודה gcloud storage buckets add-iam-policy-binding כדי להעניק את storage.objectViewer תפקיד IAM לחשבון השירות של אשכול AlloyDB עבור הדלי:

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com

    מחליפים את הפרטים הבאים:

    • CLUSTER_NAME: שם האשכול.
    • REGION: האזור שבו נפרס אשכול AlloyDB.
    • BUCKET_NAME: שם הקטגוריה ב-Cloud Storage.
    • FILE_NAME: השם של קובץ ה-CSV.
    • DATABASE_NAME: השם של מסד נתונים בתוך האשכול.
    • USER: המשתמש של פעולת הייבוא.
    • TABLE_NAME: הטבלה בתוך מסד הנתונים.

    במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.

  4. מייבאים את הקובץ:

    gcloud alloydb clusters import CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri='gs://BUCKET_NAME/PATH_TO_SQL_FILE' --user=USERNAME --sql

    אם הפקודה מחזירה שגיאה כמו PERMISSION_DENIED, צריך לבדוק את ההרשאות.

    מידע על השימוש בפקודה import זמין בדף העזרה של הפקודה alloydb import.

  5. אם אין לכם צורך בהרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן באמצעות gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. יצירת קטגוריה של Cloud Storage
  2. מעלים את קובץ ה-SQL לקטגוריה. לקבלת עזרה בהעלאת קבצים למאגרי מידע, ראו העלאת אובייקטים.
  3. נותנים לחשבון השירות הרשאות לקטגוריה של Cloud Storage עבור פעולת הייבוא. משתמשים בפורמט של חשבון השירות כדי לזהות את חשבון השירות של הפרויקט שאליו מייבאים. הפורמט של חשבון השירות הוא:

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
  4. משתמשים בפקודה gcloud storage buckets add-iam-policy-binding כדי להעניק את storage.objectViewer תפקיד IAM לחשבון השירות של אשכול AlloyDB עבור הקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.

  5. מייבאים את קובץ ה-SQL.

    משתמשים ב-method הבא ב-HTTP ובכתובת ה-URL:

    POST https://alloydbadmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • PROJECT_ID: מזהה הפרויקט.
    • LOCATION_ID: האזור שבו נפרס אשכול AlloyDB.
    • CLUSTER_ID: מזהה האשכול.
    • BUCKET_NAME: שם הקטגוריה ב-Cloud Storage.
    • PATH_TO_SQL_FILE: הנתיב לקובץ ה-SQL.
    • USER: המשתמש שישמש לייבוא.
    • DATABASE_NAME: השם של מסד נתונים בתוך אשכול AlloyDB.

    תוכן בקשת JSON:

    {
       "gcsUri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE",
       "database": "DATABASE_NAME",
       "user": "USER",
       "sqlImportOptions": {}
    }
    

    כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    ‏Curl (Linux,‏ macOS או Cloud Shell)

    שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

       curl -X POST \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d @request.json \
             "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"
    

    ‎PowerShell (Windows)

    שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"| Select-Object -Expand Content
    

    מקבלים תגובת JSON שדומה לזו:

    תשובה

    {
     "name": "projects/project-id/locations/location-id/operations/operation-id",
     "metadata": {
      "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
      "createTime": "2025-01-04T13:12:32.363393723Z",
      "target": "projects/project-id/locations/location-id/clusters/cluster-id",
      "verb": "import",
      "requestedCancellation": false,
      "apiVersion": "v1"
     },
     "done": false
    }
    

    כדי להשתמש במשתמש אחר לייבוא, צריך לציין את מאפיין המשתמש.

  6. אם אין לכם צורך לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן עכשיו.

    רשימה מלאה של הפרמטרים של הבקשה מופיעה במאמר clusters:import.

בדיקת הסטטוס של פעולת ייבוא

כדי לבדוק את הסטטוס של פעולת ייבוא:

gcloud

מריצים את הפקודה הבאה באמצעות הפקודה gcloud alloydb operations describe:

gcloud alloydb operations describe OPERATION_ID --region=REGION

אפשר גם לראות את הפרטים של פעולה ספציפית או לבטל פעולה ספציפית. מידע נוסף על הפקודה הזו מופיע בדף העזרה של הפקודה gcloud alloydb operations.

REST v1

משתמשים בשיטת GET ובכתובת ה-URL הבאה:

GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

מידע נוסף זמין במאמר get.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • REGION: האזור שבו נפרס אשכול AlloyDB.
  • PROJECT_ID: מזהה הפרויקט.
  • OPERATION_ID: המזהה של פעולת הייבוא. מידע נוסף מופיע במאמר בנושא לפני שמתחילים.

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

curl‏ (Linux,‏ macOS או Cloud Shell)

מריצים את הפקודה הבאה:

  curl -X GET \
       -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
 

PowerShell (Windows)

מריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
  -Method GET `
  -Headers $headers `
  -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID | Select-Object -Expand Content

מקבלים תגובת JSON שדומה לזו:

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע של Operation.

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