このページでは、Spanner CLI とその使用方法について説明します。
Spanner CLI は、Spanner データベースに接続して操作できるコマンドライン インターフェース(CLI)です。これは、Spanner とのインターフェースをとるために Google Cloud CLI(gcloud CLI)に組み込まれています。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 を実行する
Spanner CLI で SQL ステートメントを実行するには、execute
オプションを使用するか、ファイルベースの入出力メソッドを使用します。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 を終了します。quit と同一です。 |
Go |
\g
|
Spanner で SQL ステートメントを送信して実行します。 |
ヘルプ |
\h
|
ヘルプ情報を表示します。\? と同一です。 |
Notee |
\t
|
\T で設定された出力ファイルへの書き込みをオフにします。 |
プロンプト |
\R
|
プロンプトをユーザー プロンプト文字列に変更します。 |
終了 |
\q
|
Spanner CLI を終了します。exit と同一です。 |
ソース |
\.
|
入力ファイルから SQL を実行します。[filename] を引数として受け取ります。 |
システム |
\!
|
システム シェルコマンドを実行します。 |
Tee |
\T
|
コマンド出力を標準出力とともに指定された [filename] に追加します。 |
使用 |
\u
|
別のデータベースに接続します。新しいデータベース名を引数として受け取ります。 |
次のステップ
- サポートされているすべての
gcloud alpha spanner cli
コマンドの一覧を確認する。