כדי לטעון נתונים בטבלה לטבלה קיימת במסד נתונים, אתם יכולים לייבא קובץ CSV שמאוחסן בקטגוריה של Cloud Storage לאשכול של AlloyDB ל-PostgreSQL.
אתם יכולים לבטל את הייבוא של נתונים לאשכולות של AlloyDB. איך מבטלים פעולת ייבוא?
לפני שמתחילים
לפני שמתחילים פעולת ייבוא:
- מוודאים שיש מספיק מקום פנוי במסד הנתונים.
- פעולות הייבוא משתמשות במשאבים של מסד הנתונים, אבל הן לא מפריעות לפעולות הרגילות של מסד הנתונים, אלא אם לאשכול לא הוקצו מספיק משאבים.
התפקידים וההרשאות שנדרשים כדי לייבא לאשכולות של AlloyDB
כדי לייבא נתונים מ-Cloud Storage ל-AlloyDB, המשתמש שמפעיל את הייבוא צריך להיות באחד מהתפקידים הבאים:
- התפקיד אדמין ב-AlloyDB
- תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
alloydb.clusters.getalloydb.clusters.import
בנוסף, לחשבון השירות של אשכול AlloyDB צריך להיות אחד מהתפקידים הבאים:
- תפקיד ה-IAM
storage.objectViewer - תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
storage.objects.get
למידע נוסף על תפקידי IAM, קראו את המאמר ניהול זהויות והרשאות גישה.
ייבוא נתונים מקובץ CSV לאשכולות AlloyDB
- מסד הנתונים והטבלה שאליהם אתם מייבאים צריכים להיות קיימים באשכול AlloyDB. למידע נוסף על יצירת מסד נתונים, תוכלו לקרוא את המאמר יצירת מסד נתונים.
- בקובצי CSV, כל שורה צריכה להכיל שורת נתונים אחת, והשדות צריכים להיות מופרדים בפסיקים.
- קובצי CSV לא יכולים להכיל שורת כותרת. אם בקובץ ה-CSV יש שורת כותרת, צריך להסיר אותה לפני הייבוא.
כדי לייבא נתונים לאשכול AlloyDB באמצעות קובץ CSV:
המסוף
נכנסים לדף Clusters במסוף Google Cloud .
לוחצים על שם האשכול כדי לפתוח את דף הסקירה הכללית (Overview) שלו.
לוחצים על Import.
בקטע פורמט קובץ, בוחרים באפשרות CSV.
בקטע Select source file, בוחרים אם להעלות קבצים מהמחשב או לבחור קובץ ממיקום ב-Cloud Storage.
כדי להעלות קובץ מהמחשב:
- בוחרים באפשרות העלאת קבצים מהמחשב.
- לוחצים על עיון לצד בחירת קובץ מקומי כדי לבחור קובץ CSV מהמחשב המקומי.
- לוחצים על Browse לצד Select Cloud Storage location כדי לבחור מיקום ב-Cloud Storage שבו יאוחסן הקובץ המקומי שהועלה.
- לוחצים על העלאה כדי להעלות את הקובץ.
כדי לבחור קובץ CSV שקיים בקטגוריה של Cloud Storage:
- לוחצים על בחירת קובץ מ-Google Cloud Storage.
- לוחצים על Browse לצד bucket-name/file-name כדי לבחור קובץ CSV מקטגוריה של Cloud Storage.
בתפריט הנפתח מסד נתונים, בוחרים את מסד הנתונים שאליו רוצים לייבא את הנתונים.
בתפריט הנפתח Table, בוחרים את הטבלה במסד הנתונים.
אופציונלי: כדי לציין משתמש לפעולת הייבוא, לוחצים על הצגת אפשרויות המשתמש ומזינים את שם המשתמש בשדה משתמש.
כדי להתחיל את פעולת הייבוא, לוחצים על ייבוא.
gcloud
- יצירת קטגוריה של Cloud Storage
- מעלים את קובץ ה-CSV לקטגוריה. לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
משתמשים ב-
gcloud storage buckets add-iam-policy-bindingכדי להקצות את תפקיד ה-IAMstorage.objectViewerלחשבון השירות של AlloyDB בקטגוריה:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comבמאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.
מייבאים את הקובץ:
gcloud alloydb clusters import CLUSTER_NAME \ --region=REGION \ --gcs-uri=gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --user=USER \ --csv \ --table=TABLE_NAMEמחליפים את מה שכתוב בשדות הבאים:
- CLUSTER_NAME: שם האשכול.
- REGION: האזור שבו פרוס אשכול AlloyDB.
- BUCKET_NAME: השם של הקטגוריה ב-Cloud Storage.
- FILE_NAME: השם של קובץ ה-CSV.
- DATABASE_NAME: שם של מסד נתונים בתוך האשכול.
- USER: המשתמש שמבצע את פעולת הייבוא.
- TABLE_NAME: הטבלה בתוך מסד הנתונים.
למידע נוסף על השימוש בפקודה
import, אפשר לעיין בדף העזרה של הפקודהgcloud alloydb clusters import.אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן באמצעות
gcloud storage buckets remove-iam-policy-binding.
REST v1
- יצירת קטגוריה של Cloud Storage
- מעלים את קובץ ה-CSV לקטגוריה. לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
משתמשים ב-
gcloud storage buckets add-iam-policy-bindingכדי להקצות אתstorage.objectViewerהתפקיד ב-IAM לחשבון השירות של אשכול AlloyDB בקטגוריה. הפורמט של חשבון השירות הוא:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comבמאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.
מייבאים את הקובץ.
משתמשים ב-method הבא ב-HTTP ובכתובת ה-URL:
POST https://alloydb.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_CSV_FILE: הנתיב לקובץ ה-CSV.
- USER: המשתמש שמבצע את פעולת הייבוא.
- DATABASE_NAME: השם של מסד נתונים באשכול AlloyDB.
- TABLE_NAME: הטבלה בתוך מסד הנתונים.
- COLUMNS (אופציונלי): העמודות שרוצים לייבא.
- ESCAPE_CHARACTER (אופציונלי): התו שצריך להופיע לפני תו נתונים שצריך להוסיף לו תו בריחה (escape). הערך של הארגומנט הזה חייב להיות תו בקוד ASCII הקסדצימלי. לדוגמה,
22מייצג מירכאות כפולות. - QUOTE_CHARACTER (אופציונלי): התו שתוחם ערכים מעמודות עם סוג נתונים של מחרוזת.
הערך של הארגומנט הזה חייב להיות תו בקוד ASCII הקסדצימלי.
לדוגמה,
22מייצג מירכאות כפולות. - FIELD_DELIMITER (אופציונלי): התו שמפצל את ערכי העמודות. הערך של הארגומנט הזה חייב להיות תו בקוד ASCII הקסדצימלי. לדוגמה,
2Cמייצג פסיק.
תוכן בקשת JSON:
{ "gcsUri": "gs://BUCKET_NAME/PATH_TO_CSV_FILE", "database": "DATABASE_NAME", "user": "USER", "csvImportOptions": { "table": "TABLE_NAME", "columns": ["COLUMN1", "COLUMN2"], "fieldDelimiter": "FIELD_DELIMITER", "quoteCharacter": "QUOTE_CHARACTER", "escapeCharacter": "ESCAPE_CHARACTER" } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
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": "2024-09-17T06:05:31.244428646Z", "target": "projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID", "verb": "import", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, הסירו אותן.
הרשימה המלאה של הפרמטרים לבקשה מופיעה במאמר
clusters.import.
התאמה אישית של פורמט ה-CSV וייבוא הקובץ
אתם יכולים להתאים אישית את הפורמט של קובץ ה-CSV ולייבא אותו אם הוא מכיל תווי בריחה (escape), מירכאות או מפרידי שדות שאינם ברירת המחדל. כדי לייבא קובץ CSV בפורמט שאינו ברירת המחדל, צריך לציין בבקשה את אותן אפשרויות עיצוב.
כדי להתאים אישית את הפורמט של קובץ ה-CSV, אתם יכולים להיעזר בדוגמאות הבאות ל-CLI של gcloud ול-API בארכיטקטורת REST.
gcloud
gcloud alloydb clusters import CLUSTER_NAME \
--region=REGION \
--database=DATABASE_NAME \
--gcs-uri='gs://BUCKET_NAME/PATH_TO_CSV_FILE' \
--user=USERNAME \
--table=TABLE_NAME \
--columns=COLUMNS \
--field-delimiter='2C' \
--quote-character='22' \
--escape-character='5C' \
--csvREST v1
גוף הבקשה המקבילה ב-API בארכיטקטורת REST נראה בערך ככה:
{
"gcsUri": "gs://BUCKET_NAME/PATH_TO_CSV_FILE",
"database": "DATABASE_NAME",
"user": "USER",
"csvImportOptions": {
"table": "TABLE_NAME",
"columns": ["COLUMN1", "COLUMN2"],
"escapeCharacter": "5C",
"quoteCharacter": "22",
"fieldDelimiter": "2C"
}
}
כדי לראות איך בקשת ה-API הבסיסית בארכיטקטורת REST בנויה למשימה הזו, עיינו ב-APIs Explorer בדף clusters.import.
אם מופיעה שגיאה כמו INVALID_ARGUMENT, צריך לוודא שהטבלה קיימת. אם הטבלה קיימת, ודאו שיש לכם את ההרשאות הנכונות בקטגוריה.
במאמר יצירה וניהול של רשימות של בקרת גישה מוסבר איך מגדירים בקרת גישה ב-Cloud Storage.
בדיקת הסטטוס של פעולת ייבוא
כדי לבדוק את הסטטוס של פעולת ייבוא:
gcloud
מריצים את הפקודה הבאה באמצעות gcloud alloydb operations describe:
gcloud alloydb operations describe OPERATION_ID --region=REGIONהסטטוס של הפעולות האלה נמצא בשדה STATUS.
אפשר גם להציג את הפרטים של פעולה ספציפית או לבטל פעולה ספציפית. מידע נוסף על הפקודה הזו זמין בדף העזרה של הפקודה gcloud alloydb operations.
REST v1
משתמשים ב-method 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
אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע של Operation.