本頁面將介紹 Spanner CLI,並說明如何使用。
Spanner CLI 是一種指令列介面 (CLI),可讓您連線至 Spanner 資料庫並與之互動。這項工具已整合至 Google Cloud CLI (gcloud CLI),可與 Spanner 互動。您可以使用 Spanner CLI,直接在 Spanner 資料庫中執行 GoogleSQL 陳述式。陳述式可包含資料定義語言 (DDL)、資料操縱語言 (DML) 或資料查詢語言 (DQL) 陳述式。您可以使用 Spanner CLI 執行 SQL 指令碼,以及自動執行工作。
如要瞭解詳情,請參閱所有支援的 gcloud alpha spanner cli
指令清單。
主要優點
Spanner CLI 的主要優點包括:
- 執行 DDL、DML 和 DQL SQL 指令。
- 您可以撰寫及執行多行 SQL 陳述式。
- 支援中繼指令,可協助您執行系統工作,例如執行系統殼層指令,以及從檔案執行 SQL。
- 您可以將一系列 SQL 陳述式寫入指令碼檔案,然後指示 Spanner CLI 執行指令碼,藉此自動執行 SQL。此外,您也可以將輸出內容重新導向至輸出檔案。
- 您可以啟動互動式 Spanner CLI 工作階段,直接輸入 SQL 陳述式和中繼指令,並在 CLI 中查看結果。
事前準備
Spanner CLI 位於 gcloud CLI 中。首次執行 gcloud alpha spanner cli
指令時,gcloud CLI 會自動安裝 Spanner CLI 元件。
使用 Spanner CLI
執行下列指令,啟動 Spanner CLI 並與 Spanner 資料庫互動:
gcloud alpha spanner cli DATABASE_ID --instance=INSTANCE_ID
更改下列內容:
DATABASE_ID
:Spanner 資料庫的 ID。這是您在先前的「建立資料庫」步驟中使用的名稱。您可以使用gcloud spanner databases list
指令,列出指定執行個體中包含的 Spanner 資料庫。INSTANCE_ID
:Spanner 執行個體的 ID。這是您在先前的「建立執行個體」步驟中使用的名稱。您可以使用gcloud spanner instances list
指令,列出指定專案中包含的 Spanner 執行個體。
執行 SQL
您可以使用 execute
選項,或使用以檔案為基礎的輸入和輸出方法,在 Spanner CLI 中執行 SQL 陳述式。SQL 陳述式可包含 DDL、DML 或 DQL。
使用 execute
旗標
如要使用 execute
旗標執行 SQL,請執行下列 gcloud alpha spanner cli
指令:
gcloud alpha spanner cli DATABASE_ID --instance INSTANCE_ID \
--execute "SQL"
更改下列內容:
DATABASE_ID
:您要連線的 Spanner 資料庫 ID。INSTANCE_ID
:要連線的 Spanner 執行個體 ID。SQL
:要執行的 SQL。
舉例來說,如要執行 DDL 陳述式:
gcloud alpha spanner cli test-database --instance test-instance \
--execute "CREATE TABLE Singers ( \
SingerId INT64 NOT NULL, \
FirstName STRING(1024), \
LastName STRING(1024), \
SingerInfo STRING(1024), \
BirthDate DATE \
) PRIMARY KEY(SingerId);"
如要執行 DML 陳述式:
gcloud alpha spanner cli test-database --instance test-instance \
--execute "INSERT INTO Singers (SingerId, FirstName, LastName, SingerInfo) \
VALUES(1, 'Marc', 'Richards', 'nationality: USA'), \
(2, 'Catalina', 'Smith', 'nationality: Brazil'), \
(3, 'Andrew', 'Duneskipper', NULL);"
使用檔案式輸入和輸出
如果您使用檔案型輸入和輸出方法,Spanner 會從檔案讀取輸入內容,並將輸出內容寫入另一個檔案。如要使用檔案型輸入和輸出方法執行 SQL,請執行下列指令:
gcloud alpha spanner cli DATABASE_ID --instance INSTANCE_ID \
--source INPUT_FILE_PATH --tee OUTPUT_FILE_PATH
您也可以使用檔案型重新導向輸入和輸出方法:
gcloud alpha spanner cli DATABASE_ID --instance INSTANCE_ID \
< INPUT_FILE_PATH > OUTPUT_FILE_PATH
更改下列內容:
DATABASE_ID
:您要連線的 Spanner 資料庫 ID。INSTANCE_ID
:要連線的 Spanner 執行個體 ID。SOURCE_FILE_PATH
:包含要執行的 SQL 的檔案。OUTPUT_FILE_PATH
:要附加 SQL 輸出內容副本的具名檔案。
啟動互動工作階段
您可以啟動互動式 Spanner CLI 工作階段,直接輸入 SQL 陳述式和中繼指令,並在 CLI 中查看結果。如要進行這項操作,請執行下列指令:
gcloud alpha spanner cli DATABASE_ID --instance=INSTANCE_ID
CLI 與資料庫成功連線後,您會看到提示 (例如 spanner-cli>
),可執行下列操作:
- 直接輸入 GoogleSQL 陳述式:
- 執行交易
- 使用支援的中繼指令
按下 ENTER
鍵後,系統會將陳述式或指令傳送至適當的 Spanner 資料庫。Spanner 接著會執行陳述式或指令。
在下列範例中,您會在 test-database
中啟動互動式工作階段,然後執行 SELECT 1;
:
gcloud alpha spanner cli test-database --instance test-instance
Welcome to Spanner-Cli Client.
Type 'help;' or '\h' for help.
Type 'exit;' or 'quit;' or '\q' to exit.
spanner-cli> SELECT 1;
+---+
| |
+---+
| 1 |
+---+
1 rows in set (1.11 msecs)
執行 DDL 陳述式
如要執行 DDL 陳述式,請執行下列操作:
spanner-cli> CREATE TABLE Singers (
-> SingerId INT64 NOT NULL,
-> FirstName STRING(1024),
-> LastName STRING(1024),
-> SingerInfo STRING(1024),
-> BirthDate DATE
-> ) PRIMARY KEY(SingerId);
Query OK, 0 rows affected (17.08 sec)
執行 DML 陳述式
如要執行 DML 陳述式,請執行下列操作:
spanner-cli> INSERT INTO Singers (SingerId, FirstName, LastName, SingerInfo)
-> VALUES(1, 'Marc', 'Richards', 'nationality: USA'),
-> (2, 'Catalina', 'Smith', 'nationality: Brazil'),
-> (3, 'Andrew', 'Duneskipper', NULL);
Query OK, 3 rows affected (0.32 sec)
支援的中繼指令
Spanner CLI 支援公用程式中繼指令,這些指令會在用戶端 (本例中為 Spanner CLI) 上運作。Spanner CLI 支援下列中繼指令:
指令 | 語法 | 說明 |
---|---|---|
? |
\?
|
顯示說明資訊。與 \h 相同。
|
分隔符號 |
\d
|
設定陳述式分隔符。預設分隔符號為半形分號。 |
結束 |
\q
|
結束 Spanner CLI。與結束相同。 |
Go |
\g
|
在 Spanner 中傳送及執行 SQL 陳述式。 |
說明 |
\h
|
顯示說明資訊。與 \? 相同。
|
注意 |
\t
|
關閉寫入 \T 設定的輸出檔案集。
|
提示 |
\R
|
將提示變更為使用者提示字串。 |
結束 |
\q
|
結束 Spanner CLI。與結束相同。 |
來源 |
\.
|
從輸入檔案執行 SQL。以 [filename] 做為引數。 |
System |
\!
|
執行系統殼層指令。 |
Tee |
\T
|
將指令輸出內容和標準輸出內容附加至指定的 [filename]。 |
使用 |
\u
|
連線至其他資料庫。以新資料庫名稱做為引數。 |
後續步驟
- 查看所有支援的
gcloud alpha spanner cli
指令。