实验设置说明和要求
保护您的账号和进度。请务必在无痕浏览器窗口中,使用实验凭证运行此实验。

Cloud Spanner:載入資料並執行備份

实验 25 分钟 universal_currency_alt 1 积分 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP1049

Google Cloud 自學實驗室標誌

總覽

Cloud Spanner 是 Google 全代管、可水平擴充的關聯式資料庫服務。金融服務、遊戲、零售業和許多其他產業的客戶都信任 Cloud Spanner,會使用這項服務執行最嚴苛的工作負載,確保大規模作業的一致性和可用性。

在本實驗室中,您會運用各種方法將資料載入 Cloud Spanner,並執行資料庫備份作業。

學習內容

  • 使用 DML 插入資料
  • 透過用戶端程式庫插入資料
  • 透過用戶端程式庫插入批次資料
  • 使用 Dataflow 載入資料
  • 備份資料庫

設定和需求

瞭解以下事項後,再點選「Start Lab」按鈕

請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。

為了順利完成這個實驗室,請先確認:

  • 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。

如何開始研究室及登入 Google Cloud 控制台

  1. 點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的臨時憑證
    • 完成這個實驗室所需的其他資訊 (如有)
  2. 點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」

    接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」
  3. 如有必要,請將下方的 Username 貼到「登入」對話方塊。

    {{{user_0.username | "Username"}}}

    您也可以在「Lab Details」窗格找到 Username。

  4. 點選「下一步」

  5. 複製下方的 Password,並貼到「歡迎使用」對話方塊。

    {{{user_0.password | "Password"}}}

    您也可以在「Lab Details」窗格找到 Password。

  6. 點選「下一步」

    重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
  7. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Google Cloud 控制台稍後會在這個分頁開啟。

注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。「導覽選單」圖示和搜尋欄位

啟動 Cloud Shell

Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。

  1. 點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示 「啟動 Cloud Shell」圖示

  2. 系統顯示視窗時,請按照下列步驟操作:

    • 繼續操作 Cloud Shell 視窗。
    • 授權 Cloud Shell 使用您的憑證發出 Google Cloud API 呼叫。

連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID。輸出內容中有一行文字,宣告本工作階段的 Project_ID

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。

  1. (選用) 您可以執行下列指令來列出使用中的帳戶:
gcloud auth list
  1. 點按「授權」

輸出內容:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (選用) 您可以使用下列指令來列出專案 ID:
gcloud config list project

輸出內容:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需 gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南

工作 1:檢視執行個體

部署期間,系統已為您建立 Cloud Spanner 執行個體、資料庫和資料表。

  1. 在控制台中,依序點選「導覽選單」圖示 導覽選單 >「查看所有產品」。接著,在「資料庫」部分,點選「Spanner」

要用到的執行個體名稱為 banking-instance,請點選來前往資料庫檢視畫面。相關資料庫名稱為 banking-db,點進去後會看見預先建立的 Customer 資料表,點選即可查看結構定義。

  1. 目前資料表沒有任何內容。請返回 banking-db 總覽頁面,在左選單中點選「Spanner Studio」,然後執行下列查詢:
SELECT * FROM Customer;
  1. 查詢不會傳回任何結果。

工作 2:使用 DML 插入資料

想要將資料插入 Spanner,最簡單的方法是透過 DML。您可使用 Cloud Shell 和 gcloud 執行任何 DML 陳述式,包括 INSERT

  1. 在 Cloud Shell 中執行下列指令:
gcloud spanner databases execute-sql banking-db --instance=banking-instance \ --sql="INSERT INTO Customer (CustomerId, Name, Location) VALUES ('bdaaaa97-1b4b-4e58-b4ad-84030de92235', 'Richard Nelson', 'Ada Ohio')"
  1. 返回控制台,在左選單中點選「總覽」。接著,前往 Customer 資料表頁面並選取「資料」,即可看見剛才插入的資料列。

如前所述,您可使用 gcloud 執行任何 DML 指令。詳情請參閱 DML 和 Spanner 說明文件

當然,逐列載入資料庫不太有效率。

工作 3:透過用戶端程式庫插入資料

存取 Spanner 的理想方法是透過程式輔助介面,您可在該處使用各種用戶端程式庫,包括 C++、C#、Go、Java、Node.js、PHP、Python 和 Ruby

  1. 在 Cloud Shell 中輸入下列指令,叫用 Nano 文字編輯器,並建立新的 insert.py 空白設定檔。
nano insert.py
  1. 貼上下列程式碼區塊。
from google.cloud import spanner from google.cloud.spanner_v1 import param_types INSTANCE_ID = "banking-instance" DATABASE_ID = "banking-db" spanner_client = spanner.Client() instance = spanner_client.instance(INSTANCE_ID) database = instance.database(DATABASE_ID) def insert_customer(transaction): row_ct = transaction.execute_update( "INSERT INTO Customer (CustomerId, Name, Location)" "VALUES ('b2b4002d-7813-4551-b83b-366ef95f9273', 'Shana Underwood', 'Ely Iowa')" ) print("{} record(s) inserted.".format(row_ct)) database.run_in_transaction(insert_customer)
  1. 依序按下 Ctrl+X > Y 鍵 > Enter 鍵,在退出 Nano 時確認更新並儲存變更。

  2. 執行 Python 程式碼。

python3 insert.py
  1. 重新整理 Cloud 控制台,或點選左選單中的其他項目,然後再次點選「資料」,資料庫就會顯示新的資料列。

就像使用 gcloud 一樣,您可透過用戶端程式庫執行任何 DML 陳述式。如要查看所有語言的多個範例,請參閱說明文件

以這種方法載入資料比使用 gcloud 更有彈性,但若載入的來源含有大量資料列,仍會受到一些限制。

  1. 點選「Check my progress」,確認目標已達成。
透過用戶端程式庫插入資料

工作 4:透過用戶端程式庫插入批次資料

按批次將資料載入 Spanner 是更理想的方法,所有用戶端程式庫都支援批次載入。在本範例中,我們要使用 Python。

  1. 在 Cloud Shell 中輸入下列指令,叫用 Nano 文字編輯器,並建立新的 batch_insert.py 空白設定檔。
nano batch_insert.py
  1. 貼上下列程式碼區塊。
from google.cloud import spanner from google.cloud.spanner_v1 import param_types INSTANCE_ID = "banking-instance" DATABASE_ID = "banking-db" spanner_client = spanner.Client() instance = spanner_client.instance(INSTANCE_ID) database = instance.database(DATABASE_ID) with database.batch() as batch: batch.insert( table="Customer", columns=("CustomerId", "Name", "Location"), values=[ ('edfc683f-bd87-4bab-9423-01d1b2307c0d', 'John Elkins', 'Roy Utah'), ('1f3842ca-4529-40ff-acdd-88e8a87eb404', 'Martin Madrid', 'Ames Iowa'), ('3320d98e-6437-4515-9e83-137f105f7fbc', 'Theresa Henderson', 'Anna Texas'), ('6b2b2774-add9-4881-8702-d179af0518d8', 'Norma Carter', 'Bend Oregon'), ], ) print("Rows inserted")
  1. 依序按下 Ctrl+X > Y 鍵 > Enter 鍵,在退出 Nano 時確認更新並儲存變更。

  2. 執行 Python 程式碼。

python3 batch_insert.py
  1. 返回 Cloud 控制台,重新整理就會看見剛才插入的新資料。

批次載入資料較有效率,因為是以單一要求執行,只需在用戶端和伺服器間往返一次,這樣延遲時間就會縮短。

不過,這種方法的速度相當慢,而且會耗用資源。

  1. 點選「Check my progress」,確認目標已達成。
透過用戶端程式庫插入批次資料

工作 5:使用 Dataflow 載入資料

Dataflow 是一項 Google Cloud 服務,可大規模處理串流和批次資料。Dataflow 會使用多個 worker 同時執行資料處理作業,也就是透過管道將資料從來源轉換至目的地 (接收器)。

Dataflow 提供多種 Spanner 適用的連接器,能讓您將要連結的資料庫做為「來源」或「接收器」

需要載入大量資料時,您可善用 Dataflow 的無伺服器分散式處理技術,從來源讀取資料 (例如 Google Cloud Storage 中的 CSV 檔案),再透過接收器連接器將資料載入 Spanner 資料庫。

  1. 為準備 Dataflow 工作,請在 Cloud Shell 中執行下列指令,為專案建立 bucket,並在 bucket 內新建含有空白檔案的資料夾。
gsutil mb gs://{{{project_0.project_id|Project ID}}} touch emptyfile gsutil cp emptyfile gs://{{{project_0.project_id|Project ID}}}/tmp/emptyfile
  1. 在 Cloud Shell 中執行下列程式碼區塊,確認已設定適當的 API 和權限。
gcloud services disable dataflow.googleapis.com --force gcloud services enable dataflow.googleapis.com
  1. 在控制台中,依序點選「導覽選單」圖示 導覽選單 >「查看所有產品」。接著,在「Analytics」部分,點選「Dataflow」

  2. 點選畫面頂端的「依據範本建立工作」

  3. 在範本中填入下列值:

    • 「工作名稱」:spanner-load

    • 「區域性端點」:

  4. 向下捲動「Dataflow 範本」選取器,瀏覽所有可搭配 Dataflow 使用的藍圖。當然,您也能使用 Beam SDK 建立符合需求的管道。

範本主要分成兩種類型:

  • 串流:用來為持續流通和處理的資料 (例如網站的線上訂單) 建立管道。
  • 批次:用來處理開頭和結尾明確的資料集,例如儲存在 Google Cloud Storage 的檔案。

在這個情境中,您要從 CSV 檔案將超過 15 萬列資料載入 Spanner 的 banking 資料庫。

  1. 選取「Text Files on Cloud Storage to Cloud Spanner」範本。

  2. 在範本中填入下列值:

項目
Cloud Spanner instance ID banking-instance
Cloud Spanner database ID banking-db
Text Import Manifest file spls/gsp1049/manifest.json



如要瞭解 manifest.json 檔案格式的說明,請點選參數輸入欄位上方的「開啟教學課程」,查看這個範本的教學課程

請注意,Dataflow 須能存取及讀取儲存資訊清單檔案的 Google Cloud Storage bucket。在本實驗室中,manifest.json 的內容如下:

{ "tables": [ { "table_name": "Customer", "file_patterns": [ "gs://spls/gsp1049/Customer_List.csv" ], "columns": [ {"column_name" : "CustomerId", "type_name" : "STRING" }, {"column_name" : "Name", "type_name" : "STRING" }, {"column_name" : "Location", "type_name" : "STRING" } ] } ] }

這個資訊清單檔案指出資料表、資料欄名稱和類型 (與 CSV 檔案顯示的順序一致) 及 CSV 檔案本身,後者也儲存於 Google Cloud Storage bucket。

CSV 檔案的內容如下:

9d238899-8348-4642-9c00-77dc4481145b,Nicole Anderson,Ada Ohio 360ecaa6-9ec3-4fa0-81a5-3b0dc629e1fa,Ellen Richardson,Ada Ohio 8ee6c2ea-923b-45db-8d51-7f8e7a117af0,Wendy Daniel,Ada Ohio 1d7112cc-c1ee-414f-9325-95c97f9a25d3,Virginia Beasley,Ada Ohio ...
  1. 在「臨時位置」參數部分輸入下列值:
{{{project_0.project_id|Project ID}}}/tmp
  1. 展開「選用參數」

  2. 取消勾選「使用預設機型」

  3. 在「一般用途」下方,選擇下列選項:

    • 「系列」:E2
    • 「機型」:e2-medium (2 個 vCPU,4 GB 記憶體)
  4. 點選「執行工作」即可啟動管道。

  5. 這項程序約需 12 至 16 分鐘才能完成。等待期間,您會發現 Dataflow 經歷多個階段:先啟動 worker 並分析範本中的管道,接著讀取資訊清單檔案,開始處理 CSV 檔案。

注意:如果管道啟動失敗並傳回錯誤,指出未佈建 worker 節點,請回到步驟 4,重新使用相同範本和名稱來建立新工作。不過,這次要選擇美國的其他區域性端點。舉例來說,假設步驟 5 指示您將「區域性端點」設為「us-east4」,則第二次嘗試時,可改選「us-east1」

請等到 Dataflow 處理完畢,再繼續操作。完成後,狀態會顯示「成功」

  1. 從 Cloud 控制台的左選單返回「Spanner」,前往 Customer 資料表頁面並選取「資料」。畫面上會顯示先前使用 Dataflow 載入的所有新資料列。

  2. 返回 banking-db 總覽頁面,在左選單中點選「Spanner Studio」,然後執行下列查詢,查看 Customer 資料表的總資料列數:

SELECT COUNT(*) FROM Customer;

透過 Dataflow 範本,就能輕鬆快速地載入大量資料。您可按照相同程序載入其他資料庫的傾印檔,而且格式不限 CSV 檔案,Avro 檔案也沒問題。甚至還能反過來操作,在 Dataflow 中將 Spanner 資料庫做為來源,並以 CSV 或 Avro 格式匯出資料。

  1. 點選「Check my progress」,確認目標已達成。
使用 Dataflow 載入資料

工作 6:備份資料庫

按照上述說明使用 Dataflow,是建立資料備份的一種方法。不過,Spanner 本身就有備份工具。無論是 Cloud 控制台用戶端程式庫gcloud 指令,都能用來備份 Spanner 資料庫。點選連結即可查看相應的說明文件。

在本實驗室中,您要使用 Cloud 控制台備份資料庫。

  1. 選取左選單中的「備份/還原」

  2. 點選「建立備份」

  3. 在精靈中填入或選取下列值:

項目
資料庫名稱 banking-db
備份名稱 banking-backup-001
到期日 1 年



  1. 點選「建立」

  2. 備份作業約需 15 分鐘才能完成,建立進度會顯示在「備份」清單中。

恭喜!

現在您已充分瞭解如何運用各種方法,將資料載入 Cloud Spanner 執行個體並執行備份。

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2025 年 9 月 16 日

實驗室上次測試日期:2025 年 9 月 16 日

Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

使用无痕模式或无痕浏览器窗口是运行此实验的最佳方式。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。