本頁說明如何建立及管理 Spanner 資料庫:
- 建立資料庫的各種方法
- 修改資料庫選項
- 刪除資料庫
本頁面提供 GoogleSQL 方言資料庫和 PostgreSQL 方言資料庫的相關資訊。如要瞭解如何更新資料庫結構定義,請參閱「更新結構定義」。如要進一步瞭解如何建立執行個體,請參閱「建立及管理執行個體」。您可以透過下列任一方式,在現有執行個體中建立資料庫:
- 建立資料庫:您可以選取 SQL 方言並定義結構定義,藉此建立新的資料庫。
- 匯入自有資料:您可以將 CSV、MySQL 傾印或 PostgreSQL 傾印檔案匯入新的或現有資料庫。
- 建立內含樣本資料的資料庫:您可以使用其中一個可用的範例資料集填充資料庫,試用 Spanner 的功能。
建立資料庫
您可以在現有執行個體中建立新資料庫。如果是 GoogleSQL 方言資料庫,您可以在建立資料庫時或之後定義資料庫結構定義。如果是 PostgreSQL 方言資料庫,您必須在建立後定義結構定義。
結構定義是使用資料庫定義語言定義,相關說明文件請參閱 GoogleSQL 和 PostgreSQL。如要進一步瞭解如何建立及更新結構定義,請參閱下列連結:
建立資料庫後,您可以啟用資料庫刪除防護功能,保護對應用程式和服務而言重要的資料庫。詳情請參閱「防止意外刪除資料庫」。
Google Cloud 控制台
前往 Google Cloud 控制台的「Spanner Instances」(Spanner 執行個體) 頁面。
選取要建立資料庫的執行個體。
按一下 [Create database] (建立資料庫)。
輸入下列值:
- 顯示於 Google Cloud 控制台中的資料庫名稱。
- 這個資料庫要使用的方言。
- 如果是 GoogleSQL 方言資料庫,您可以選擇提供一組定義結構定義的 DDL 陳述式。使用 DDL 範本預先填入常見元素。如果 DDL 陳述式有錯誤,當您嘗試建立資料庫時, Google Cloud 控制台會傳回錯誤。
- (選用) 選取要用於這個資料庫的客戶自行管理加密金鑰。
按一下「建立」即可建立資料庫。
gcloud
使用 gcloud spanner databases create
指令。
```sh
gcloud spanner databases create DATABASE \
--instance=INSTANCE \
[--async] \
[--database-dialect=DATABASE_DIALECT] \
[--ddl=DDL] \
[--ddl-file=DDL_FILE] \
[--kms-key=KMS_KEY : --kms-keyring=KMS_KEYRING --kms-location=KMS_LOCATION --kms-project=KMS_PROJECT] \
[GCLOUD_WIDE_FLAG …]
```
以下是必要選項:
DATABASE
- 資料庫的 ID 或完整 ID。如果指定完整 ID,則可以省略
--instance
標記。 --instance=INSTANCE
- 資料庫的 Spanner 執行個體。
以下是選用選項:
--async
- 立即傳回,不必等待進行中的作業完成。
--database-dialect=DATABASE_DIALECT
- Spanner 資料庫的 SQL 方言。必須是下列之一:
POSTGRESQL
、GOOGLE_STANDARD_SQL
。 --ddl=DDL
- 以半形分號分隔的 DDL (資料定義語言) 陳述式,可在新建立的資料庫中執行。如果任何陳述式發生錯誤,系統就不會建立資料庫。如果已設定
--ddl_file
,系統會忽略這個旗標。PostgreSQL 方言資料庫不支援這項功能。 --ddl-file=DDL_FILE
- 檔案路徑,其中包含以半形分號分隔的 DDL (資料定義語言) 陳述式,可在新建立的資料庫中執行。如果任何陳述式發生錯誤,系統就不會建立資料庫。如果設定
--ddl_file
,系統就會忽略--ddl
。PostgreSQL 方言資料庫不支援這項功能。
如要指定建立資料庫時使用的 Cloud Key Management Service 金鑰,請加入下列選項:
--kms-key=KMS_KEY
- 金鑰的 ID 或完整 ID。
如果指定這個群組中的任何其他引數,就必須設定這個旗標。如果提供完整 ID,可以省略其他引數。
--kms-keyring=KMS_KEYRING
- 金鑰的 Cloud KMS 金鑰環 ID。
--kms-location=KMS_LOCATION
- Google Cloud 金鑰位置。
--kms-project=KMS_PROJECT
- Google Cloud 金鑰的專案 ID。
用戶端 (GoogleSQL)
C++
如要瞭解如何安裝及使用 Spanner 的用戶端程式庫,請參閱這篇文章。
如要向 Spanner 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要瞭解如何安裝及使用 Spanner 的用戶端程式庫,請參閱這篇文章。
如要向 Spanner 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要瞭解如何安裝及使用 Spanner 的用戶端程式庫,請參閱這篇文章。
如要向 Spanner 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要瞭解如何安裝及使用 Spanner 的用戶端程式庫,請參閱這篇文章。
如要向 Spanner 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要瞭解如何安裝及使用 Spanner 的用戶端程式庫,請參閱這篇文章。
如要向 Spanner 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要瞭解如何安裝及使用 Spanner 的用戶端程式庫,請參閱這篇文章。
如要向 Spanner 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Ruby
如要瞭解如何安裝及使用 Spanner 的用戶端程式庫,請參閱這篇文章。
如要向 Spanner 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
匯入您的資料
您可以透過 CSV 檔案、MySQL 傾印檔案或 PostgreSQL 傾印檔案,將自己的資料匯入 Spanner 資料庫。您可以透過 Cloud Storage 上傳本機檔案,也可以直接從 Cloud Storage 值區上傳。使用 Cloud Storage 上傳本機檔案可能會產生費用。
如果選擇使用 CSV 檔案,您也需要上傳包含資料庫結構定義的 JSON 檔案。
Google Cloud 控制台
前往 Google Cloud 控制台的「Spanner Instances」(Spanner 執行個體) 頁面。
選取要建立資料庫的執行個體。
按一下「匯入我的資料」。
輸入下列值:
選取「檔案類型」。
從電腦上傳檔案,或選取檔案的 Cloud Storage 值區路徑。
(選用) 如果選擇使用 CSV 檔案,您也需要上傳包含資料庫結構定義的 JSON 檔案。JSON 檔案必須使用下列結構定義結構定義:
{ "name": "COLUMN_NAME", "type": "TYPE", "notNull": NOT_NULL_VALUE, "primaryKeyOrder": PRIMARY_KEY_ORDER }
更改下列內容:
COLUMN_NAME:資料表中的資料欄名稱。
TYPE:資料欄的資料類型。
(選用) NOT_NULL_VALUE:資料欄是否可儲存空值。有效輸入內容為
true
或false
。 預設值為false
。(選用):PRIMARY_KEY_ORDER:決定主鍵順序。將非主鍵資料欄的值設為
0
。將值設為整數,例如主鍵資料欄的1
。在複合主鍵中,數字較小的資料欄會顯示在較早的位置。
CSV 檔案預設會以半形逗號做為欄位分隔符號,並以換行符號做為行分隔符號。如要進一步瞭解如何使用自訂分隔符,請參閱
gcloud alpha spanner databases import
參考資料。選取新資料庫或現有資料庫做為目的地。
按一下「匯入」。
Spanner 會開啟 Cloud Shell,並填入安裝 Spanner 遷移工具及執行
gcloud alpha spanner databases import
指令的指令。按下ENTER
鍵,將資料匯入資料庫。
使用範例資料集
您可以從範例資料集填入現有執行個體中的新資料庫,藉此探索 Spanner 功能,例如關聯式模型、全文搜尋或向量搜尋。
Google Cloud 控制台
前往 Google Cloud 控制台的「Spanner Instances」(Spanner 執行個體) 頁面。
選取要建立資料庫的執行個體。
按一下「探索資料集」。
選取下列其中一個資料集:
按一下 [Create database] (建立資料庫)。
更新資料庫結構定義或選項
您可以使用 DDL 陳述式更新資料庫結構定義和選項。
舉例來說,如要將資料欄新增至資料表,請使用下列 DDL 陳述式:
GoogleSQL
ALTER TABLE Songwriters ADD COLUMN Publisher STRING(10);
PostgreSQL
ALTER TABLE Songwriters ADD COLUMN Publisher VARCHAR(10);
如要更新查詢最佳化工具版本,請使用下列 DDL 陳述式:
GoogleSQL
ALTER DATABASE Music SET OPTIONS(optimizer_version=null);
PostgreSQL
ALTER DATABASE DB-NAME SET spanner.optimizer_version TO DEFAULT;
如要進一步瞭解支援的選項,請參閱 ALTER DATABASE
GoogleSQL 或 PostgreSQL 的 DDL 參考資料。
如要瞭解如何更新結構定義,請參閱更新結構定義。
Google Cloud 控制台
前往 Google Cloud 控制台的「Spanner Instances」(Spanner 執行個體) 頁面。
選取包含要變更資料庫的執行個體。
選取資料庫。
按一下「Spanner Studio」。
按一下「新增分頁」
,或使用空白的編輯器分頁。然後輸入要套用的 DDL 陳述式。按一下「執行」套用更新。如果 DDL 中有錯誤, Google Cloud 主控台會傳回錯誤,且資料庫不會變更。
gcloud
如要透過 gcloud
指令列工具變更資料庫,請使用 gcloud spanner databases ddl update
。
gcloud spanner databases ddl update \ (DATABASE : --instance=INSTANCE) \ [--async] \ [--ddl=DDL] \ [--ddl-file=DDL_FILE] \
如要進一步瞭解可用選項,請參閱 gcloud
參考資料。
使用 --ddl
旗標或 --ddl-file
旗標,將資料庫更新傳遞至指令。如果指定 DDL 檔案,系統會忽略 --ddl
旗標。
DDL
詳情請參閱 GoogleSQL 或 PostgreSQL 的 ALTER DATABASE
DDL 參考資料。
查看結構定義更新作業的進度
Google Cloud 控制台
在 Spanner 導覽選單中,選取「作業」分頁標籤。「Operations」(作業) 頁面會顯示正在執行的作業清單。
在清單中找出結構定義作業。如果作業仍在執行中,「結束時間」欄中的進度列會顯示作業完成百分比,如下圖所示:
gcloud
使用 gcloud spanner operations describe
檢查作業進度。
取得作業 ID:
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
更改下列內容:
- 將 INSTANCE-NAME 替換為 Spanner 執行個體名稱。
- 將 DATABASE-NAME 替換為資料庫名稱。
執行
gcloud spanner operations describe
:gcloud spanner operations describe OPERATION_ID\ --instance=INSTANCE-NAME \ --database=DATABASE-NAME
更改下列內容:
- OPERATION-ID:您要檢查的作業 ID。
- INSTANCE-NAME:Spanner 執行個體名稱。
- DATABASE-NAME:Spanner 資料庫名稱。
輸出內容中的
progress
區段會顯示作業完成的百分比。輸出看起來類似以下內容:done: true metadata: ... progress: - endTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 startTime: '2022-03-01T00:28:04.221401Z' - endTime: '2022-03-01T00:28:17.624588Z' startTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 ...
REST v1
取得作業 ID:
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
更改下列內容:
- 將 INSTANCE-NAME 替換為 Spanner 執行個體名稱。
- 將 DATABASE-NAME 替換為資料庫名稱。
查看作業進度。
使用任何要求資料之前,請先替換以下項目:
- PROJECT-ID:專案 ID。
- INSTANCE-ID:執行個體 ID。
- DATABASE-ID:資料庫 ID。
- OPERATION-ID:作業 ID。
HTTP 方法和網址:
GET https://spanner.googleapis.com/v1/projects/PROJECT-ID/instances/INSTANCE-ID/databases/DATABASE-ID/operations/OPERATION-ID
如要傳送要求,請展開以下其中一個選項:
您應該會收到如下的 JSON 回應:
{ ... "progress": [ { "progressPercent": 100, "startTime": "2023-05-27T00:52:27.366688Z", "endTime": "2023-05-27T00:52:30.184845Z" }, { "progressPercent": 100, "startTime": "2023-05-27T00:52:30.184845Z", "endTime": "2023-05-27T00:52:40.750959Z" } ], ... "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty" } }
如果作業時間過長,可以取消作業。詳情請參閱取消長時間執行的資料庫作業。
刪除資料庫
在您刪除資料庫之後,系統將永久移除該資料庫及其所有資料。資料庫刪除後即無法復原。如果資料庫已啟用防刪除功能,您必須停用該功能,才能刪除資料庫。
刪除資料庫時,系統不會刪除現有備份。詳情請參閱「備份及還原」。
Google Cloud 控制台
前往 Google Cloud 控制台的「Spanner Instances」(Spanner 執行個體) 頁面。
選取包含要刪除資料庫的執行個體。
選取資料庫。
按一下「刪除資料庫」。系統會顯示確認訊息。
輸入資料庫名稱,然後按一下「Delete」。
gcloud
如要使用 gcloud
指令列工具刪除資料庫,請使用 gcloud spanner databases delete
。
gcloud spanner databases delete \ (DATABASE : --instance=INSTANCE)
以下是必要選項:
DATABASE
- 資料庫的 ID 或完整 ID。如果提供完整識別碼,則應省略
--instance
標記。 --instance=INSTANCE
- 資料庫的 Spanner 執行個體。
詳情請參閱gcloud
參考資料。
DDL
DDL 不支援資料庫刪除語法。
後續步驟
- 建立資料庫並載入範例資料。
- 進一步瞭解 GoogleSQL DDL 參考資料。
- 進一步瞭解 PostgreSQL DDL 參考資料。
- 瞭解如何備份及還原資料庫。
- 瞭解如何防止意外刪除資料庫。
- 瞭解如何更新結構定義。