Spanner-CLI-Kurzanleitung

Auf dieser Seite wird die Spanner-Befehlszeile vorgestellt und ihre Verwendung wird erläutert.

Die Spanner-Befehlszeile ist eine Befehlszeilenschnittstelle (Command Line Interface, CLI), mit der Sie eine Verbindung zu Ihrer Spanner-Datenbank herstellen und mit ihr interagieren können. Sie ist in die Google Cloud CLI (gcloud CLI) integriert, um mit Spanner zu interagieren. Mit der Spanner CLI können Sie GoogleSQL-Anweisungen direkt in Ihrer Spanner-Datenbank ausführen. Ihre Anweisungen können aus DDL-Anweisungen (Datendefinitionssprache), DML-Anweisungen (Datenbearbeitungssprache) oder DQL-Anweisungen (Data Query Language, Datenabfragesprache) bestehen. Mit der Spanner-CLI können Sie SQL-Befehlsskripts ausführen und Aufgaben automatisieren.

Es basiert auf dem Open-Source-Projekt spanner-cli.

Weitere Informationen finden Sie in der Liste aller unterstützten gcloud spanner cli-Befehle.

Hauptvorteile

Mit dem Spanner können Sie die folgenden Aktionen ausführen:

  • DDL-, DML- und DQL-SQL-Befehle ausführen
  • SQL-Anweisungen über mehrere Zeilen hinweg schreiben und ausführen
  • Verwenden Sie Meta-Befehle, um Systemaufgaben wie das Ausführen eines System-Shell-Befehls und das Ausführen von SQL aus einer Datei zu erledigen.
  • Sie können SQL-Ausführungen automatisieren, indem Sie eine Reihe von SQL-Anweisungen in eine Skriptdatei schreiben und dann die Spanner CLI anweisen, das Skript auszuführen. Außerdem können Sie die Ausgabe in eine Ausgabedatei umleiten.
  • Starten Sie eine interaktive Spanner-CLI-Sitzung, in der Sie SQL-Anweisungen und Meta-Befehle direkt eingeben und Ergebnisse in der CLI sehen können.

Hinweise

Bevor Sie die Spanner-CLI verwenden, müssen Sie sicherstellen, dass Sie die erforderliche Rolle haben und die CLI installiert haben.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Cloud Spanner Admin (roles/spanner.admin) für Spanner zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Installieren von Spanner benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Spanner-Befehlszeile installieren

Die Spanner CLI ist in der gcloud CLI verfügbar. Wenn Sie den Befehl gcloud spanner cli zum ersten Mal ausführen, wird die Spanner CLI-Komponente automatisch von der gcloud CLI installiert.

Führen Sie den folgenden Befehl aus, um die Spanner-Befehlszeile manuell zu installieren:

gcloud components install spanner-cli

Wenn die Installation mit dem Google Cloud CLI-Befehl fehlschlägt oder in Ihrer Shell-Umgebung nicht möglich ist, bietet Spanner eigenständige Debian-Pakete (.deb) und RPM-Pakete (.rpm). Sie können diese Pakete verwenden, um sie manuell auf kompatiblen Systemen zu installieren. Führen Sie den folgenden Befehl aus, um die Erweiterung zu installieren:

apt-get install google-cloud-cli-spanner-cli

Konfigurationsoptionen

Die Spanner-Befehlszeile unterstützt die folgenden konfigurierbaren Optionen:

  • Die Projektoption wird über die Property core/project abgerufen. Alternativ können Sie das Projekt mit der Option --project angeben.
  • Die Instanzoption wird über die Property core/instance abgerufen. Alternativ können Sie die Instanz mit der Option --instance angeben.
  • Der API-Endpunkt wird über die Property api_endpoint_overrides/spanner abgerufen. Alternativ können Sie den Endpunkt mit den Optionen --host und --port angeben. Wenn kein Endpunkt angegeben ist, wird der Standard-Spanner-Endpunkt verwendet.

Spanner-Befehlszeile verwenden

  1. Richten Sie ein Google Cloud Projekt ein.

  2. Authentifizierung mit der gcloud CLI einrichten

  3. Instanz erstellen

  4. Datenbank erstellen

  5. Führen Sie den folgenden Befehl aus, um die Spanner CLI zu starten und mit Ihrer Spanner-Datenbank zu interagieren:

    gcloud spanner cli DATABASE_ID --instance=INSTANCE_ID
    

    Ersetzen Sie Folgendes:

    • DATABASE_ID: Die ID der Spanner-Datenbank. Das ist der Name, den Sie im vorherigen Schritt „Datenbank erstellen“ verwendet haben. Mit dem Befehl gcloud spanner databases list können Sie die Spanner-Datenbanken auflisten, die in der angegebenen Instanz enthalten sind.
    • INSTANCE_ID: Die ID der Spanner-Instanz. Das ist der Name, den Sie im vorherigen Schritt „Instanz erstellen“ verwendet haben. Mit dem Befehl gcloud spanner instances list können Sie die Spanner-Instanzen auflisten, die im angegebenen Projekt enthalten sind.

SQL ausführen

Sie können SQL-Anweisungen in der Spanner-Befehlszeile mit der Option execute oder mit einer dateibasierten Ein- und Ausgabemethode ausführen. Ihre SQL-Anweisungen können aus DDL, DML oder DQL bestehen.

Verwenden Sie das Flag execute.

Wenn Sie das Flag execute verwenden möchten, um SQL auszuführen, führen Sie den folgenden gcloud spanner cli-Befehl aus:

gcloud spanner cli DATABASE_ID --instance INSTANCE_ID \
    --execute "SQL"

Ersetzen Sie Folgendes:

  • DATABASE_ID: Die ID der Spanner-Datenbank, mit der Sie eine Verbindung herstellen möchten.
  • INSTANCE_ID: Die ID der Spanner-Instanz, zu der Sie eine Verbindung herstellen möchten.
  • SQL: Der SQL-Code, den Sie ausführen möchten.

So führen Sie beispielsweise eine DDL-Anweisung aus:

gcloud 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);"

So führen Sie eine DML-Anweisung aus:

gcloud 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);"

Dateibasierte Ein- und Ausgabe verwenden

Wenn Sie die dateibasierte Ein- und Ausgabemethode verwenden, liest Spanner die Eingabe aus einer Datei und schreibt die Ausgabe in eine andere Datei. Wenn Sie die dateibasierte Ein- und Ausgabemethode zum Ausführen von SQL verwenden möchten, führen Sie den folgenden Befehl aus:

gcloud spanner cli DATABASE_ID --instance INSTANCE_ID \
    --source INPUT_FILE_PATH --tee OUTPUT_FILE_PATH

Sie können auch die dateibasierte Methode für die Weiterleitung von Ein- und Ausgabe verwenden:

gcloud spanner cli DATABASE_ID --instance INSTANCE_ID \
    < INPUT_FILE_PATH > OUTPUT_FILE_PATH

Ersetzen Sie Folgendes:

  • DATABASE_ID: Die ID der Spanner-Datenbank, mit der Sie eine Verbindung herstellen möchten.
  • INSTANCE_ID: Die ID der Spanner-Instanz, zu der Sie eine Verbindung herstellen möchten.
  • SOURCE_FILE_PATH: Die Datei, die den auszuführenden SQL-Code enthält.
  • OUTPUT_FILE_PATH: die benannte Datei, an die eine Kopie der SQL-Ausgabe angehängt werden soll.

Interaktive Sitzung starten

Sie können eine interaktive Spanner-CLI-Sitzung starten, in der Sie SQL-Anweisungen und Meta-Befehle direkt eingeben und die Ergebnisse in der CLI sehen können. Führen Sie dazu den folgenden Befehl aus:

gcloud spanner cli DATABASE_ID --instance=INSTANCE_ID

Nachdem die Verbindung zwischen der CLI und Ihrer Datenbank hergestellt wurde, wird eine Eingabeaufforderung (z. B. spanner-cli>) angezeigt, in der Sie Folgendes tun können:

Nachdem Sie die ENTER-Taste gedrückt haben, wird die Anweisung oder der Befehl an die entsprechende Spanner-Datenbank gesendet. Spanner führt dann die Anweisung oder den Befehl aus.

Im folgenden Beispiel starten Sie eine interaktive Sitzung in test-database und führen dann SELECT 1; aus:

gcloud 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-Anweisung ausführen

So führen Sie eine DDL-Anweisung aus:

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-Anweisung ausführen

So führen Sie eine DML-Anweisung aus:

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)

Partitionierte DML-Anweisung ausführen

In der Spanner-Befehlszeile können Sie das Schlüsselwort PARTITIONED mit den Befehlen UPDATE und DELETE verwenden, um effiziente, umfangreiche partitionierte DML-Anweisungen auszuführen. Wenn die Spanner CLI auf PARTITIONED UPDATE oder PARTITIONED DELETE trifft, werden diese als partitionierte DML-Vorgänge erkannt. Diese Schlüsselwörter sind nützlich für Vorgänge, die einen erheblichen Teil einer Tabelle betreffen, ohne die gesamte Tabelle für einen längeren Zeitraum zu sperren. Spanner wendet partitionierte DML-Anweisungen nicht atomar auf die gesamte Tabelle an. Partitionierte DML-Anweisungen werden atomar auf jede Partition angewendet.

So führen Sie eine partitionierte DML-Anweisung aus:

-- Update all rows in the 'Products' table by multiplying the price by 2
spanner-cli> PARTITIONED UPDATE Products SET Price = Price * 2 WHERE Price > 100;

-- Delete all rows in the 'Products' table with price less than 500
spanner-cli> PARTITIONED DELETE FROM Products WHERE Price < 500;

Unterstützte Meta-Befehle

Die Spanner-Befehlszeile unterstützt Utility-Metabefehle, die für den Client, in diesem Fall die Spanner-Befehlszeile, ausgeführt werden. Die folgenden Metabefehle werden in der Spanner-Befehlszeile unterstützt:

Befehl Syntax Beschreibung
? \? Damit rufen Sie Hilfeinformationen auf. Gleich wie bei \h
Trennzeichen \d Legt das Anweisungs-Trennzeichen fest. Das Standardtrennzeichen ist ein Semikolon.
Beenden \q Beendet die Spanner-Befehlszeile. Identisch mit „Beenden“.
Go \g Sendet und führt eine SQL-Anweisung in Spanner aus.
Hilfe \h Damit rufen Sie Hilfeinformationen auf. Gleich wie bei \?
Hinweis \t Deaktiviert das Schreiben in die Ausgabedatei, die durch \T festgelegt wurde.
Prompt \R Ändert Ihren Prompt in einen Nutzer-Prompt-String.
Beenden \q Beendet die Spanner-Befehlszeile. Wie „Beenden“.
Quelle \. Führt SQL aus einer Eingabedatei aus. Akzeptiert [filename] als Argument.
System \! Führt einen System-Shell-Befehl aus.
Tee \T Hängt die Befehlsausgabe zusammen mit der Standardausgabe an eine angegebene [filename] an.
Verwenden \u Stellt eine Verbindung zu einer anderen Datenbank her. Akzeptiert den neuen Datenbanknamen als Argument.

Zusätzliche unterstützte Befehle

Die Spanner-Befehlszeile unterstützt zusätzliche Befehle. Weitere Informationen finden Sie unter Spanner-CLI-Befehle.

Support anfordern

Wenn Sie ein Problem mit der Spanner CLI melden möchten, erstellen Sie ein neues Problem.

Nächste Schritte