במסמך הזה מוסבר איך לטעון כמות קטנה של נתונים בפורמט קובץ CSV ל-Spanner. אתם יכולים לטעון נתונים לדוגמה לפני שתבצעו העברה של נתוני ייצור כדי לבדוק סכימות, שאילתות ואפליקציות.
לפני שמתחילים
מתקינים את Google Cloud CLI או משתמשים ב-Cloud Shell, שבו כל הכלים הדרושים מותקנים מראש.
-
כדי לקבל את ההרשאות שדרושות לייצוא נתונים מ-BigQuery אל Spanner, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
-
ייצוא נתונים מטבלה ב-BigQuery:
BigQuery Data Viewer (
roles/bigquery.dataViewer) -
מריצים משימת ייצוא:
משתמש BigQuery (
roles/bigquery.user) -
כתיבת נתונים לטבלת Spanner:
משתמש במסד נתונים של Spanner (
roles/spanner.databaseUser)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
-
ייצוא נתונים מטבלה ב-BigQuery:
BigQuery Data Viewer (
טעינת נתונים לדוגמה ב-Spanner
ההוראות הבאות מתבצעות באמצעות תהליך העבודה של BigQuery reverse ETL ו-Google Cloud CLI.
מגדירים פרויקט ברירת מחדל ב-CLI של gcloud באמצעות הפקודה הבאה:
gcloud config set project PROJECT_ID
מייצאים את נתוני המקור בפורמט קובץ CSV. כדי להמיר את נתוני הדוגמה לפורמט של קובץ CSV, אפשר להשתמש בכלים הבאים:
pg_dumpלמסדי נתונים של PostgreSQL אוmysqldumpלמסדי נתונים של MySQL.טוענים את הנתונים ל-BigQuery באמצעות הפקודות הבאות של
bq:יוצרים מערך נתונים ב-BigQuery.
bq mk BQ_DATASET
טעינת הנתונים באצווה לטבלה חדשה ב-BigQuery.
bq load \ --source_format=CSV \ --autodetect \ --allow_quoted_newlines \ BQ_DATASET.BQ_TABLE /path/to/file
אפשר גם לטעון את הנתונים מקובץ ב-Cloud Storage בטעינה אצווה.
bq load \ --source_format=CSV \ --autodetect \ --allow_quoted_newlines \ BQ_DATASET.BQ_TABLE gs://BUCKET/FILE
יוצרים סכימה של Spanner שתואמת ל-BQ_TABLE המיובא באמצעות הפקודה הבאה:
gcloud spanner databases ddl update SPANNER_DATABASE \ --instance=SPANNER_INSTANCE \ --ddl="CREATE TABLE SPANNER_TABLE ..."
מידע נוסף זמין במאמר בנושא עדכון סכימת Spanner.
כדי לייצא נתונים מ-BigQuery ל-Spanner, משתמשים בפקודה הבאה:
bq --use_legacy_sql=false 'EXPORT DATA OPTIONS( uri="https://spanner.googleapis.com/projects/PROJECT_ID/instances/SPANNER_INSTANCE/databases/SPANNER_DATABASE" format='CLOUD_SPANNER' spanner_options="""{ "table": "SPANNER_TABLE" }""" ) AS SELECT * FROM BQ_DATASET.BQ_TABLE;'