ייצוא וייבוא באמצעות קובצי CSV

בדף הזה מוסבר איך לייצא נתונים למכונות Cloud SQL ולייבא מהן נתונים באמצעות קובצי CSV.

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

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

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

  • מוודאים שקובץ ה-CSV מכיל את הנתונים הצפויים ושהוא בפורמט הנכון. קובצי CSV חייבים לכלול שורה אחת לכל שורה של שדות נתונים.
  • פועלים לפי השיטות המומלצות לייצוא ולייבוא של נתונים.

ייצוא נתונים מ-Cloud SQL ל-MySQL

תפקידים והרשאות שנדרשים לייצוא מ-Cloud SQL ל-MySQL

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

בנוסף, לחשבון השירות של מכונת 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:

המסוף

  1. נכנסים לדף Cloud SQL Instances במסוף Google Cloud .

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
  3. לוחצים על ייצוא.
  4. בקטע פורמט קובץ, לוחצים על CSV.
  5. בשדה SQL query (שאילתת SQL), מזינים שאילתת SQL כדי לציין את הטבלה שממנה רוצים לייצא את הנתונים.

    לדוגמה, כדי לייצא את כל התוכן של הטבלה entries במסד הנתונים guestbook, מזינים את הפקודה הבאה:

    ‫
    SELECT * FROM guestbook.entries;
    השאילתה צריכה לציין טבלה במסד הנתונים שצוין. אי אפשר לייצא מסד נתונים שלם בפורמט CSV.

  6. אופציונלי: בוחרים באפשרות העברת הייצוא למופע זמני כדי לאפשר פעולות אחרות בזמן שהייצוא מתבצע.
  7. אופציונלי: לוחצים על Show database options ובוחרים את שם מסד הנתונים מהתפריט הנפתח Database.
  8. בקטע Destination, מוסיפים את השם של הקטגוריה, התיקייה והקובץ שאליהם רוצים לייצא, או לוחצים על Browse כדי למצוא או ליצור קטגוריה, תיקייה או קובץ.

    אם לוחצים על עיון:

    1. בקטע מיקום, בוחרים תיקייה או קטגוריה של Cloud Storage לייצוא.
    2. בתיבה Name, מוסיפים שם לקובץ CSV או בוחרים קובץ קיים מהרשימה בקטע Location.

      אפשר להשתמש בסיומת הקובץ .gz (הסיומת המלאה תהיה .csv.gz) כדי לדחוס את קובץ הייצוא.

    3. לוחצים על בחירה.
  9. לוחצים על ייצוא כדי להתחיל את הייצוא.

gcloud

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

    לקבלת עזרה בהעלאת קבצים לקטגוריות, אפשר לעיין במאמר העלאת אובייקטים.

  3. מאתרים את חשבון השירות של המכונה ב-Cloud SQL שממנה מייצאים. כדי לעשות את זה, מריצים את הפקודה gcloud sql instances describe. מחפשים את השדה serviceAccountEmailAddress בפלט.
    gcloud sql instances describe INSTANCE_NAME
  4. משתמשים ב- gcloud storage buckets add-iam-policy-binding כדי להקצות את storage.objectAdmin תפקיד ה-IAM לחשבון השירות של מכונת Cloud SQL. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.
  5. מייצאים את מסד הנתונים:
    gcloud sql export csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \
    --database=DATABASE_NAME \
    --offload \
    --query=SELECT_QUERY
    

    מידע על השימוש בפקודה export csv מופיע בדף העזרה של הפקודה sql export csv.

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

REST v1

  1. יוצרים קטגוריה לייצוא:
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
    

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

  2. מספקים למופע את storage.objectAdmin תפקיד ה-IAM של הקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.
  3. מייצאים את מסד הנתונים:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫bucket_name: השם של הקטגוריה של Cloud Storage
    • ‫path_to_csv_file: הנתיב לקובץ ה-CSV
    • database_name: השם של מסד נתונים בתוך המכונה של Cloud SQL
    • ‫offload: הפעלת ייצוא ללא שרת. הערך true מאפשר להשתמש בייצוא ללא שרת.
    • ‫select_query: שאילתת SQL לייצוא (אופציונלי)
    • ‫escape_character: התו שצריך להופיע לפני תו נתונים שצריך להוסיף לו תו בריחה (escape). הערך של הארגומנט הזה צריך להיות תו בקוד 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.

  4. אם אין לכם צורך לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן עכשיו.
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:export.

REST v1beta4

  1. יוצרים קטגוריה לייצוא:
    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME

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

  2. נותנים למכונה את storage.objectAdmin תפקיד ה-IAM לקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.
  3. מייצאים את מסד הנתונים:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫bucket_name: השם של הקטגוריה של Cloud Storage
    • ‫path_to_csv_file: הנתיב לקובץ ה-CSV
    • database_name: השם של מסד נתונים בתוך המכונה של Cloud SQL
    • ‫offload: הפעלת ייצוא בלי שרת (serverless). הערך true מאפשר להשתמש בייצוא ללא שרת.
    • ‫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 שדומה לזו:

    אם שאילתת הבחירה מציינת מסד נתונים, היא מבטלת את ההגדרה של המאפיין databases.

  4. אם אתם לא צריכים לשמור את תפקיד ה-IAM שהגדרתם קודם, בטלו אותו עכשיו.
רשימה מלאה של הפרמטרים של הבקשה מופיעה בדף instances:export.

התאמה אישית של הפורמט של קובץ CSV לייצוא

אפשר להשתמש ב-gcloud או ב-API בארכיטקטורת REST כדי להתאים אישית את פורמט קובץ ה-CSV. כשמייצאים, אפשר לציין את אפשרויות העיצוב הבאות:

אפשרות CSV ערך ברירת המחדל דגל gcloud נכס API בארכיטקטורת REST תיאור
Escape

"5C"

קוד הקסדצימלי ב-ASCII למפריד קבצים.

--escape escapeCharacter

תווים שמופיעים לפני תווי נתונים שצריך להוסיף להם תו בריחה.

האפשרות זמינה רק ל-MySQL ול-PostgreSQL.

ציטוט

"22"

קוד הקסדצימלי ב-ASCII למירכאות כפולות.

--quote quoteCharacter

תו שמקיף ערכים מעמודות עם סוג נתונים מסוג מחרוזת.

זמין רק ל-MySQL ול-PostgreSQL.

תו מפריד בין שדות

"2C"

קוד הקסדצימלי ב-ASCII לפסיק.

--fields-terminated-by fieldsTerminatedBy

התו שמפצל את ערכי העמודות.

זמין רק ל-MySQL ול-PostgreSQL.

תו של שורה חדשה

"0A"

קוד הקסדצימלי ב-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 צריך להיות אחד מהתפקידים הבאים:

  • תפקיד ה-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

דרישות לגבי פורמט קובץ CSV

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

כדי לייבא נתונים למכונת Cloud SQL באמצעות קובץ CSV:

המסוף

  1. נכנסים לדף Cloud SQL Instances במסוף Google Cloud .

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
  3. לוחצים על Import.
  4. בקטע פורמט קובץ, בוחרים באפשרות CSV.
  5. בקטע Select source file (בחירת קובץ מקור), מזינים את הנתיב לקובץ ה-CSV או מעלים קובץ CSV מקומי לשימוש לייבוא. כדי לעבור לקובץ:
    1. לוחצים על עיון.
    2. בקטע Location, לוחצים לחיצה כפולה על שם הקטגוריה ברשימה.
    3. בוחרים את הקובץ מהרשימה.
    4. לוחצים על בחירה.

    אפשר לייבא קובץ דחוס (.gz) או קובץ לא דחוס (.csv).

  6. בקטע יעד, מציינים את מסד הנתונים ואת הטבלה במכונת Cloud SQL שאליה רוצים לייבא את קובץ ה-CSV.
  7. לוחצים על ייבוא כדי להתחיל את הייבוא.

gcloud

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

    לקבלת עזרה בהעלאת קבצים לקטגוריות, אפשר לעיין במאמר העלאת אובייקטים.

  3. מעלים את הנתונים מקובץ ה-CSV למאגר.
  4. מזהים את חשבון השירות של מופע Cloud SQL שממנו מייצאים. כדי לעשות את זה, מריצים את הפקודה gcloud sql instances describe עם שם המכונה. מחפשים את השדה serviceAccountEmailAddress בפלט.
    gcloud sql instances describe INSTANCE_NAME
  5. מעתיקים את השדה serviceAccountEmailAddress.
  6. משתמשים ב- gcloud storage buckets add-iam-policy-binding כדי להקצות את תפקיד ה-IAM storage.objectAdmin לחשבון השירות של מכונת Cloud SQL בקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.
  7. מייבאים את הקובץ:
    gcloud sql import csv INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \
    --database=DATABASE_NAME \
    --table=TABLE_NAME

    למידע על השימוש בפקודה import csv, עיינו בדף העזרה של הפקודה sql import csv.

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

REST v1

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

    לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.

  3. נותנים למכונה את תפקידי ה-IAM storage.objectAdmin ו-objectViewer לקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.
  4. מייבאים את הקובץ:

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

    • ‫project-id: מזהה הפרויקט
    • ‫instance-id: מזהה המכונה
    • ‫bucket_name: השם של הקטגוריה של Cloud Storage
    • ‫path_to_csv_file: הנתיב לקובץ ה-CSV
    • database_name: השם של מסד נתונים בתוך המכונה של Cloud SQL
    • ‫table_name: השם של טבלת מסד הנתונים
    • ‫escape_character: התו שצריך להופיע לפני תו נתונים שצריך להוסיף לו תו בריחה (escape). הערך של הארגומנט הזה צריך להיות תו בקוד 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.
  5. אם אתם לא צריכים לשמור את הרשאות ה-IAM שהגדרתם קודם, אתם יכולים להסיר אותן.

REST v1beta4

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

    לקבלת עזרה בהעלאת קבצים לקטגוריות, ראו העלאת אובייקטים.

  3. מקצים למכונה את תפקיד ה-IAM storage.objectAdmin לקטגוריה. במאמר שימוש בהרשאות IAM מוסבר איך מגדירים הרשאות IAM.
  4. מייבאים את הקובץ:

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

    • ‫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.
  5. אם אתם לא צריכים לשמור את הרשאות ה-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"

גוף הבקשה המקביל ב-REST API ייראה כך:

{
 "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.

כדי לראות איך בנויה בקשת API בארכיטקטורת REST הבסיסית למשימה הזו, אפשר לעיין בדף הייבוא של APIs Explorer במופעים.

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