בדף הזה מתואר ייצוא וייבוא של נתונים למכונות Cloud SQL באמצעות קובצי CSV.
לפני שמתחילים
לפני שמתחילים בפעולת ייצוא או ייבוא:
- מוודאים שיש מספיק מקום פנוי במסד הנתונים.
- מוודאים שקובץ ה-CSV מכיל את הנתונים הצפויים ושהוא בפורמט הנכון. בקובצי CSV, כל שורה של שדות נתונים צריכה להיות בשורה נפרדת.
- כדאי לפעול לפי השיטות המומלצות לייצוא ולייבוא נתונים.
פעולות הייצוא והייבוא משתמשות במשאבי מסד הנתונים, אבל הן לא מפריעות לפעולות רגילות של מסד הנתונים, אלא אם המכונה לא מספקת מספיק משאבים.
ייצוא נתונים מ-Cloud SQL ל-MySQL
תפקידים והרשאות שנדרשים לייצוא מ-Cloud SQL ל-MySQL
כדי לייצא נתונים מ-Cloud SQL ל-Cloud Storage, למשתמש שמפעיל את הייצוא צריך להיות אחד מהתפקידים הבאים:
- התפקיד Cloud SQL Editor
- תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
cloudsql.instances.getcloudsql.instances.export
בנוסף, לחשבון השירות של מכונת Cloud SQL צריך להיות אחד מהתפקידים הבאים:
- תפקיד
storage.objectAdminניהול הזהויות והרשאות הגישה (IAM) - תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
storage.objects.create-
storage.objects.list(לייצוא קבצים במקביל בלבד) -
storage.objects.delete(לייצוא קבצים במקביל בלבד)
למידע נוסף על תפקידים ב-IAM, אפשר לעיין במאמר ניהול זהויות והרשאות גישה.
ייצוא נתונים לקובץ CSV מ-Cloud SQL ל-MySQL
אפשר לייצא את הנתונים בפורמט CSV, שמתאים לשימוש בכלים ובסביבות אחרות. הייצוא מתבצע ברמת מסד הנתונים. במהלך ייצוא של קובץ CSV, אפשר לציין את הסכימות לייצוא. אפשר לייצא את כל הסכימות ברמת מסד הנתונים.
כדי לייצא נתונים ממסד נתונים במכונת Cloud SQL לקובץ CSV בקטגוריה של Cloud Storage:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- לוחצים על ייצוא.
- בוחרים באפשרות הפחתת עומס ייצוא כדי לאפשר פעולות אחרות בזמן שהייצוא מתבצע.
- לוחצים על הצגת אפשרויות מתקדמות.
- בקטע מסד נתונים, בוחרים את שם מסד הנתונים מהתפריט הנפתח.
-
בשדה SQL query (שאילתת SQL), מזינים שאילתת SQL כדי לציין את הטבלה שממנה רוצים לייצא את הנתונים.
לדוגמה, כדי לייצא את כל התוכן של הטבלה
entriesבמסד הנתוניםguestbook, מזינים השאילתה צריכה לציין טבלה במסד הנתונים שצוין. אי אפשר לייצא מסד נתונים שלם בפורמט CSV.SELECT * FROM guestbook.entries;
- לוחצים על ייצוא כדי להתחיל את הייצוא.
- התיבה Export database? תיפתח עם הודעה שתהליך הייצוא יכול להימשך שעה או יותר במסדי נתונים גדולים. במהלך הייצוא, הפעולה היחידה שאפשר לבצע במופע היא הצגת מידע. אחרי שהייצוא מתחיל, אפשר לבטל את הפעולה. אם זה זמן טוב להתחיל ייצוא, לוחצים על ייצוא. אחרת, לוחצים על ביטול.
gcloud
- יוצרים קטגוריה של Cloud Storage.
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- מוצאים את חשבון השירות של מכונת Cloud SQL שממנה מייצאים. אפשר לעשות את זה באמצעות הפקודה
gcloud sql instances describe. חפשו את השדהserviceAccountEmailAddressבפלט.gcloud sql instances describe INSTANCE_NAME
- משתמשים ב-
gcloud storage buckets add-iam-policy-bindingכדי להקצות את תפקיד ה-IAM לחשבון השירות של מכונת Cloud SQL.storage.objectAdminבמאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM. - מייצאים את מסד הנתונים:
gcloud sql export csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --offload \ --query=SELECT_QUERY
מידע על השימוש בפקודה
export csvמופיע בדף העזרה של הפקודהsql export csv. - אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, בטלו אותו עכשיו.
REST v1
- יוצרים קטגוריה לייצוא:
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.
- מספקים למופע את
storage.objectAdminתפקיד ה-IAM של הקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM. -
מייצאים את מסד הנתונים:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- bucket_name: שם הקטגוריה של Cloud Storage
- path_to_csv_file: הנתיב לקובץ ה-CSV
- database_name: השם של מסד נתונים בתוך מכונת Cloud SQL
- offload: מאפשר ייצוא ללא שרת. מגדירים את הערך
trueכדי להשתמש בייצוא בלי שרת (serverless). - select_query: שאילתת SQL לייצוא (אופציונלי)
- escape_character: התו שצריך להופיע לפני תו נתונים שצריך להוסיף לו תו בריחה. הערך של הארגומנט הזה צריך להיות תו בקוד ASCII הקסדצימלי. לדוגמה, '22' מייצג מרכאות כפולות. (אופציונלי)
- quote_character:התו שמקיף ערכים מעמודות עם סוג נתונים של מחרוזת. הערך של הארגומנט הזה צריך להיות תו בקוד ASCII הקסדצימלי. לדוגמה, '22' מייצג מרכאות כפולות. (אופציונלי)
- fields_terminated_by: התו שמשמש לפיצול ערכי העמודות. הערך של הארגומנט הזה צריך להיות תו בקוד ASCII הקסדצימלי. לדוגמה, '2C' מייצג פסיק. (אופציונלי)
- lines_terminated_by: התו שמפריד בין רשומות השורות. הערך של הארגומנט הזה צריך להיות תו בקוד ASCII הקסדצימלי. לדוגמה, '0A' מייצג שורה חדשה. (אופציונלי)
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export
תוכן בקשת JSON:
{ "exportContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "databases": "database_name", "offload": true | false "csvExportOptions": { "selectQuery":"select_query", "escapeCharacter":"escape_character", "quoteCharacter":"quote_character", "fieldsTerminatedBy":"fields_terminated_by", "linesTerminatedBy":"lines_terminated_by" } } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
אם שאילתת ה-SELECT מציינת מסד נתונים, היא מבטלת את ההגדרה של המאפיין
databases. - אם אין לכם צורך לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן עכשיו.
REST v1beta4
- יוצרים קטגוריה לייצוא:
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
השלב הזה לא נדרש, אבל מומלץ מאוד לבצע אותו כדי שלא תהיה גישה לנתונים אחרים.
- מספקים למופע את
storage.objectAdminתפקיד ה-IAM של הקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM. -
מייצאים את מסד הנתונים:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- bucket_name: שם הקטגוריה של Cloud Storage
- path_to_csv_file: הנתיב לקובץ ה-CSV
- database_name: השם של מסד נתונים בתוך מכונת Cloud SQL
- offload: מאפשר ייצוא ללא שרת. מגדירים את הערך
trueכדי להשתמש בייצוא בלי שרת (serverless). - select_query: שאילתת SQL לייצוא (אופציונלי)
- escape_character: התו שצריך להופיע לפני תו נתונים שצריך להוסיף לו תו בריחה. הערך של הארגומנט הזה צריך להיות בפורמט הקסדצימלי של ASCII. לדוגמה, '22' מייצג מרכאות כפולות. (אופציונלי)
- quote_character: התו שמקיף ערכים מעמודות עם סוג נתונים של מחרוזת. הערך של הארגומנט הזה צריך להיות בפורמט הקסדצימלי של ASCII. לדוגמה, '22' מייצג מרכאות כפולות. (אופציונלי)
- fields_terminated_by: התו שמפריד בין ערכי העמודות. הערך של הארגומנט הזה צריך להיות בפורמט הקסדצימלי של ASCII. לדוגמה, '2C' מייצג פסיק. (אופציונלי)
- lines_terminated_by: התו שמפריד בין רשומות השורות. הערך של הארגומנט הזה צריך להיות בפורמט הקסדצימלי של ASCII. לדוגמה, '0A' מייצג שורה חדשה. (אופציונלי)
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
תוכן בקשת JSON:
{ "exportContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "databases": "database_name", "offload": true | false "csvExportOptions": { "selectQuery": "select_query", "escapeCharacter": "escape_character", "quoteCharacter": "quote_character", "fieldsTerminatedBy": "fields_terminated_by", "linesTerminatedBy": "lines_terminated_by" } } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
אם שאילתת ה-SELECT מציינת מסד נתונים, היא מבטלת את ההגדרה של המאפיין
databases. - אם אין צורך לשמור את תפקיד ה-IAM שהגדרתם קודם, בטלו אותו עכשיו.
התאמה אישית של הפורמט של קובץ CSV לייצוא
אפשר להשתמש ב-gcloud או ב-API בארכיטקטורת REST כדי להתאים אישית את פורמט הקובץ של קובץ ה-CSV. כשמבצעים ייצוא, אפשר לציין את אפשרויות הפורמט הבאות:
| אפשרות CSV | ערך ברירת המחדל | תג gcloud | מאפיין API בארכיטקטורת REST | תיאור |
|---|---|---|---|---|
| Escape |
קוד הקסדצימלי של ASCII למפריד קבצים. |
--escape |
escapeCharacter |
תו שמופיע לפני תו נתונים שצריך להוסיף לו תו בריחה. האפשרות זמינה רק ל-MySQL ול-PostgreSQL. |
| ציטוט |
קוד הקסדצימלי של ASCII לגרשיים כפולים. |
--quote |
quoteCharacter |
תווים שסוגרים ערכים מעמודות עם נתונים מסוג מחרוזת. האפשרות זמינה רק ל-MySQL ול-PostgreSQL. |
| תו מפריד בין שדות |
קוד הקסדצימלי של פסיק ב-ASCII. |
--fields-terminated-by |
fieldsTerminatedBy |
התו שמפריד בין ערכי העמודות. האפשרות זמינה רק ל-MySQL ול-PostgreSQL. |
| תו מעבר לשורה חדשה |
קוד הקסדצימלי של ASCII לשורה חדשה. |
--lines-terminated-by |
linesTerminatedBy |
התו שמפצל רשומות של שורות. האפשרות זמינה רק ב-MySQL. |
לדוגמה, פקודת gcloud שמשתמשת בכל הארגומנטים האלה יכולה להיראות כך:
gcloud sql export csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --offload \ --query=SELECT_QUERY \ --quote="22" \ --escape="5C" \ --fields-terminated-by="2C" \ --lines-terminated-by="0A"
גוף בקשת ה-API המקבילה בארכיטקטורת REST ייראה כך:
{ "exportContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "databases": ["DATABASE_NAME"], "offload": true, "csvExportOptions": { "selectQuery": "SELECT_QUERY", "escapeCharacter": "5C", "quoteCharacter": "22", "fieldsTerminatedBy": "2C", "linesTerminatedBy": "0A" } } }
הדוגמאות הקודמות של gcloud ו-API שוות להרצת הצהרת ה-SQL הבאה:
SELECT [QUERY] INTO OUTFILE ... CHARACTER SET 'utf8mb4' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\\' LINES TERMINATED BY '\n'
ייבוא נתונים אל Cloud SQL ל-MySQL
תפקידים והרשאות שנדרשים לייבוא ל-Cloud SQL ל-MySQL
כדי לייבא נתונים מ-Cloud Storage ל-Cloud SQL, למשתמש שמבצע את הייבוא צריך להיות אחד מהתפקידים הבאים:
- התפקיד Cloud SQL Admin
- תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
cloudsql.instances.getcloudsql.instances.import
בנוסף, לחשבון השירות של מכונת Cloud SQL צריך להיות אחד מהתפקידים הבאים:
- תפקיד IAM
storage.objectAdmin - תפקיד בהתאמה אישית, כולל ההרשאות הבאות:
storage.objects.get-
storage.objects.list(רק לייבוא קבצים במקביל)
למידע נוסף על תפקידים ב-IAM, אפשר לעיין במאמר ניהול זהויות והרשאות גישה.
ייצוא נתונים משרת MySQL מקומי לקובץ CSV
כדי לייצא טבלה ב-MySQL לייבוא ל-Cloud SQL, מומלץ לעצב את הקובץ באמצעות הפקודה הבאה:
mysql --host=INSTANCE_IP --user=USER_NAME --password DATABASE \ -e " SELECT * FROM TABLE INTO OUTFILE 'FILE_NAME' CHARACTER SET 'utf8mb4' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"' "
אתם יכולים להתאים אישית את הפורמט של קובץ ה-CSV המיוצא.
ייבוא נתונים מקובץ CSV אל Cloud SQL ל-MySQL
- מסד הנתונים והטבלה שאליהם אתם מייבאים צריכים להיות קיימים במכונת Cloud SQL.
למידע נוסף על יצירת מסד נתונים, תוכלו לקרוא את המאמר יצירת מסד נתונים.
כדי ליצור טבלה, משתמשים בהצהרת ה-SQL
CREATE TABLEבלקוחmysql. - קובץ ה-CSV צריך לעמוד בדרישות הפורמט של קובץ CSV.
- אם מייבאים נתונים שייצאתם משרת MySQL מקומי:
- יצירת קטגוריה ב-Cloud Storage.
- מעלים את קובץ ה-SQL מוכן לשימוש לקטגוריה של Cloud Storage.
דרישות לגבי פורמט של קובץ CSV
בקובצי CSV צריכה להיות שורה אחת לכל שורת נתונים, והשדות צריכים להיות מופרדים בפסיקים.
כדי לייבא נתונים למכונת Cloud SQL באמצעות קובץ CSV:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- לוחצים על Import.
- בקטע Select source file (בחירת קובץ מקור), מזינים את הנתיב לדלי ולקובץ ה-CSV או מעלים קובץ CSV מקומי לשימוש בייבוא. כדי לעבור לקובץ:
- לוחצים על עיון.
- בקטע Location (מיקום), לוחצים לחיצה כפולה על שם הקטגוריה ברשימה.
- בוחרים את הקובץ מהרשימה.
- לוחצים על בחירה.
אפשר לייבא קובץ דחוס (
.gz) או קובץ לא דחוס (.csv). - בקטע פורמט, בוחרים באפשרות CSV.
- מציינים את המסד נתונים ואת הטבלה במכונת Cloud SQL שבה רוצים לייבא את קובץ ה-CSV.
- לוחצים על ייבוא כדי להתחיל בייבוא.
gcloud
- יוצרים קטגוריה של Cloud Storage.
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- מעלים את הנתונים מקובץ ה-CSV אל הדלי.
- מזהים את חשבון השירות של מופע Cloud SQL שממנו מייצאים. אפשר לעשות זאת באמצעות הרצת הפקודה
gcloud sql instances describeעם שם המכונה. חפשו את השדהserviceAccountEmailAddressבפלט.gcloud sql instances describe INSTANCE_NAME
- מעתיקים את השדה serviceAccountEmailAddress.
- משתמשים ב-
gcloud storage buckets add-iam-policy-bindingכדי להעניק את תפקיד ה-IAMstorage.objectAdminלחשבון השירות של מכונת Cloud SQL עבור הדלי. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM. - מייבאים את הקובץ:
gcloud sql import csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --table=TABLE_NAME
מידע על השימוש בפקודה
import csvזמין בדף העזרה של הפקודהsql import csv. - אם אין צורך לשמור את הרשאות ה-IAM שהגדרתם קודם, מסירים אותן באמצעות
gcloud storage buckets remove-iam-policy-binding.
REST v1
- יוצרים קטגוריה של Cloud Storage.
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למופע את תפקידי ה-IAM
storage.objectAdminו-objectViewerלקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM. - מייבאים את הקובץ:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- bucket_name: שם הקטגוריה של Cloud Storage
- path_to_csv_file: הנתיב לקובץ ה-CSV
- database_name: השם של מסד נתונים בתוך מכונת Cloud SQL
- table_name: השם של טבלת מסד הנתונים
- escape_character: התו שצריך להופיע לפני תו נתונים שצריך להוסיף לו תו בריחה. הערך של הארגומנט הזה צריך להיות תו בקוד ASCII הקסדצימלי. לדוגמה, '22' מייצג מרכאות כפולות. (אופציונלי)
- quote_character: התו שמקיף ערכים מעמודות עם סוג נתונים של מחרוזת. הערך של הארגומנט הזה צריך להיות תו בקוד ASCII הקסדצימלי. לדוגמה, '22' מייצג מרכאות כפולות. (אופציונלי)
- fields_terminated_by: התו שמשמש לפיצול ערכי העמודות. הערך של הארגומנט הזה צריך להיות תו בקוד ASCII הקסדצימלי. לדוגמה, '2C' מייצג פסיק. (אופציונלי)
- lines_terminated_by: התו שמפריד בין רשומות השורות. הערך של הארגומנט הזה צריך להיות תו בקוד ASCII הקסדצימלי. לדוגמה, '0A' מייצג שורה חדשה. (אופציונלי)
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
תוכן בקשת JSON:
{ "importContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "database": "database_name", "csvImportOptions": { "table": "table_name", "escapeCharacter": "escape_character", "quoteCharacter": "quote_character", "fieldsTerminatedBy": "fields_terminated_by", "linesTerminatedBy": "lines_terminated_by" } } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:import. - אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.
REST v1beta4
- יוצרים קטגוריה של Cloud Storage.
מעלים את הקובץ לקטגוריה.
לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.
- נותנים למופע את
storage.objectAdminתפקיד ה-IAM של הקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM. - מייבאים את הקובץ:
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט
- instance-id: מזהה המכונה
- bucket_name: שם הקטגוריה של Cloud Storage
- path_to_csv_file: הנתיב לקובץ ה-CSV
- database_name: השם של מסד נתונים בתוך מכונת Cloud SQL
- table_name: השם של טבלת מסד הנתונים
- escape_character: התו שצריך להופיע לפני תו נתונים שצריך להוסיף לו תו בריחה. הערך של הארגומנט הזה צריך להיות בפורמט הקסדצימלי של ASCII. לדוגמה,'22' מייצג מרכאות כפולות. (אופציונלי)
- quote_character: התו שמקיף ערכים מעמודות עם סוג נתונים של מחרוזת. הערך של הארגומנט הזה צריך להיות בפורמט הקסדצימלי של ASCII. לדוגמה, '22' מייצג מרכאות כפולות. (אופציונלי)
- fields_terminated_by: התו שמשמש לפיצול ערכי העמודות. הערך של הארגומנט הזה צריך להיות בפורמט הקסדצימלי של ASCII. לדוגמה, '2C' מייצג פסיק. (אופציונלי)
- lines_terminated_by: התו שמפריד בין רשומות השורות. הערך של הארגומנט הזה צריך להיות בפורמט הקסדצימלי של ASCII. לדוגמה, '0A' מייצג שורה חדשה. (אופציונלי)
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
תוכן בקשת JSON:
{ "importContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "database": "database_name", "csvImportOptions": { "table": "table_name", "escapeCharacter": "escape_character", "quoteCharacter": "quote_character", "fieldsTerminatedBy": "fields_terminated_by", "linesTerminatedBy": "lines_terminated_by" } } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:import. - אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.
התאמה אישית של הפורמט של קובץ CSV ל-Cloud SQL ל-MySQL
אפשר להשתמש ב-gcloud או ב-API בארכיטקטורת REST כדי להתאים אישית את פורמט הקובץ של קובץ ה-CSV.
דוגמה לפקודת gcloud:
gcloud sql import csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME \ --table=TABLE_NAME \ --quote="22" \ --escape="5C" \ --fields-terminated-by="2C" \ --lines-terminated-by="0A"
גוף בקשת ה-API המקבילה בארכיטקטורת REST ייראה כך:
{ "importContext": { "fileType": "CSV", "uri": "gs://bucket_name/path_to_csv_file", "database": ["DATABASE_NAME"], "csvImportOptions": { "table": "TABLE_NAME", "escapeCharacter": "5C", "quoteCharacter": "22", "fieldsTerminatedBy": "2C", "linesTerminatedBy": "0A" } } }
הדוגמאות הקודמות של gcloud ו-API שוות להרצת הצהרת ה-SQL הבאה:
LOAD DATA LOCAL INFILE ... CHARACTER SET 'utf8mb4'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\\'.
אם מופיעה שגיאה כמו ERROR_RDBMS, צריך לוודא שהטבלה קיימת. אם הטבלה קיימת, צריך לוודא שיש לכם את ההרשאות הנכונות בדלי. במאמר
יצירה וניהול של רשימות של בקרת גישה מוסבר איך להגדיר בקרת גישה ב-Cloud Storage.