הוספה, עדכון ומחיקה של נתונים באמצעות Google Cloud CLI

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

שינוי נתונים באמצעות DML

כדי להריץ הצהרות של שפת טיפול בנתונים (DML), משתמשים בפקודה gcloud spanner databases execute-sql . בדוגמה הבאה מוסיפים שורה חדשה לטבלה Singers.

gcloud spanner databases execute-sql example-db --instance=test-instance \
    --sql="INSERT Singers (SingerId, FirstName, LastName) VALUES (1, 'Marc', 'Richards')"

כדי להריץ פקודת DML עם חלוקה למחיצות, משתמשים בפקודה gcloud spanner databases execute-sql עם האפשרות --enable-partitioned-dml. בדוגמה הבאה מוצג עדכון של שורות בטבלה Albums.

gcloud spanner databases execute-sql example-db \
    --instance=test-instance --enable-partitioned-dml \
    --sql='UPDATE Albums SET MarketingBudget = 0 WHERE MarketingBudget IS NULL'

למידע על הפקודות של Spanner DML, אפשר לעיין במאמר תחביר של שפת טיפול בנתונים.

שינוי שורות באמצעות קבוצת הפקודות rows

משתמשים בקבוצת הפקודות gcloud spanner rows כדי לשנות נתונים במסד נתונים:

  • הוספת שורות חדשות לטבלה.
  • עדכון עמודות בשורות קיימות בטבלה.
  • מחיקת שורות מטבלה.

קבוצת הפקודות rows מזהה ערכים מילוליים לכל סוגי העמודות התקינים.

הוספת שורה לטבלה

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

gcloud spanner rows insert --instance=INSTANCE_ID --database=DATABASE_ID \
    --table=TABLE_NAME \
    --data=COL_NAME_1=COL_VALUE_1,COL_NAME_2=COL_VALUE_2,COL_NAME_3=COL_VALUE_3,...,COL_NAME_N=COL_VALUE_N

בדוגמה הבאה מוסיפים שורה חדשה לטבלה Singers:

gcloud spanner rows insert --instance=test-instance --database=example-db \
    --table=Singers \
    --data=SingerId=1,FirstName='Marc',LastName='Richards'

עדכון שורה בטבלה

כדי לעדכן שורה בטבלה, צריך לכלול ערכים בעמודות המפתח ובעמודות שרוצים לעדכן:

gcloud spanner rows update --instance=INSTANCE_ID --database=DATABASE_ID \
    --table=TABLE_NAME \
    --data=COL_NAME_1=COL_VALUE_1,COL_NAME_2=COL_VALUE_2,COL_NAME_3=COL_VALUE_3,...,COL_NAME_N=COL_VALUE_N

בדוגמה הבאה מתבצע עדכון של שורה בטבלה Singers:

gcloud spanner rows update --instance=test-instance --database=example-db \
    --table=Singers \
    --data=SingerId=1,FirstName='Marc',LastName='Richards'

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

מחיקת שורה מטבלה

כדי למחוק שורה, צריך לציין את הערכים של עמודות המפתח הראשי:

gcloud spanner rows delete --instance=INSTANCE_ID --database=DATABASE_ID  \
    --table=TABLE_NAME \
    --keys=KEY_VALUE_1,KEY_VALUE_2,KEY_VALUE_3
בדוגמה הבאה נמחקת שורה מהטבלה Singers:
gcloud spanner rows delete --instance=test-instance --database=example-db \
    --table=Singers \
    --keys=1

ציון ערכי ARRAY

כדי להוסיף או לעדכן ערכים בעמודה ARRAY, צריך להזין את הנתונים בקובץ YAML ולהשתמש באפשרות --flags-file.

לדוגמה, בקובץ ה-YAML הזה מצוין המערך [1,2,3] לעמודה Numbers:

# stats.yaml
--data:
    Id: 1
    Locked: True
    Numbers:
        -   1
        -   2
        -   3

כדי להוסיף שורה עם נתוני ה-YAML, משתמשים באפשרות --flags-file:

gcloud spanner rows insert --instance=test-instance --database=example-db \
     --table=Stats \
     --flags-file stats.yaml

אם מדובר במערך NULL, לא כוללים ערך של Numbers בקובץ:

# stats.yaml
--data:
    Id: 1
    Locked: True

כדי להגדיר מערך ריק, צריך להגדיר אותו כך: []:

# stats.yaml
--data:
    Id: 1
    Locked: True
    Numbers: []

ציון חותמות זמן של קומיטים

כדי להוסיף או לעדכן ערך באופן אוטומטי בעמודה חותמת זמן של שליחה, מעבירים את הערך spanner.commit_timestamp() בעמודה. בדוגמה הבאה, חותמת הזמן של השמירה נכתבת בעמודה LastUpdated כשהשורה מוכנסת.

gcloud spanner rows insert --instance=test-instance --database=example-db \
    --table=Singers \
    --data=SingerId=1,LastUpdated='spanner.commit_timestamp()'

בדוגמה הבאה מוצג איך לכתוב ערך ספציפי של חותמת זמן בעמודה LastUpdated:

gcloud spanner rows update --instance=test-instance --database=example-db \
    --table=Singers \
    --data=SingerId=1,LastUpdated=2017-01-02T12:34:00.45Z