בדף הזה מוסבר איך להוסיף, לעדכן ולמחוק נתונים באמצעות כלי שורת הפקודה 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
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