Ausgabe der cbt-Befehlszeile formatieren
In diesem Dokument wird beschrieben, wie Sie bestimmte Datentypen formatieren, die in Bigtable-Zeilen gespeichert sind, wenn sie von der cbt
-Befehlszeile (CLI) angezeigt werden.
Beispiele für Formatierungen
Ab Version 0.12.0 werden die
cbt
-Befehlszeile
kann formatieren
bestimmten komplexen Datentypen, die in Tabellenzeilen gespeichert sind.
Wenn Sie den Befehl cbt read
oder cbt lookup
verwenden,
cbt
-Befehlszeile
können
"Pretty print" Werte, die in den Zeilen gespeichert sind.
Das folgende Beispiel zeigt die Datenausgabe der
cbt
-Befehlszeile
ohne
Formatierung.
----------------------------------------
r1
fam1:col1 @ 2022/03/09-11:19:45.966000
"\n\x05Brave\x10\x02"
fam1:col2 @ 2022/03/14-11:17:20.014000
"{\"name\": \"Brave\", \"age\": 2}"
Das folgende Beispiel zeigt die Datenausgabe der cbt
CLI mit Formatierung.
r1
fam1:col1 @ 2022/03/09-11:19:45.966000
name: "Brave"
age: 2
fam1:col2 @ 2022/03/14-11:17:20.014000
age: 2.00
name: "Brave"
Zeilen mit Formatierung drucken
Wenn Sie eine Spalte oder Spaltenfamilie formatieren möchten, müssen Sie eine YAML-Datei bereitstellen, die die Formatierung für diese Spalte angibt. Wenn Sie cbt lookup
oder cbt read
aufrufen, übergeben Sie den Pfad an die YAML-Datei mit dem Argument format-file
. Das folgende Snippet zeigt ein Beispiel für den Aufruf von cbt lookup
mit dem angegebenen Argument format-file
.
cbt lookup my-table r1 format-file=/path/to/formatting.yml
Spaltendatenformate in YAML definieren
Die YAML-Formatierungsdatei muss die Spaltennamen oder die Namen der Spaltenfamilie mit den darin gespeicherten Datentypen verbinden. Das folgende Snippet zeigt ein Beispiel für eine YAML-Formatierungsdatei.
protocol_buffer_definitions:
- cat.proto
protocol_buffer_paths:
- testdata/
columns:
col1:
encoding: ProtocolBuffer
type: Cat
col2:
encoding: json
Das folgende Snippet zeigt den Inhalt von „cat.proto“.
syntax = "proto3";
package cats;
option go_package = "github.com/protocolbuffers/protobuf/examples/go/tutorialpb";
message Cat {
string name = 1;
int32 age = 2;
}
Sehen Sie sich das Beispiel an:
- Das Feld
protocol_buffer_definitions
enthält eine Liste der .proto-Dateien, die Nachrichtentypen für den Protokollpuffer enthalten können, die für die Decodierung von Protobuf-Daten verwendet werden können. - Das Feld
protocol_buffer_paths
enthält eine Liste lokaler Pfade, die .proto-Dateien zum Decodieren von Protokollpuffertypen enthalten können. Sie müssen die Speicherorte der standardmäßigen Protokollpufferimporte nicht angeben, z. B. Nachrichten im Paketgoogle/protobuf
. Das Feld
columns
enthält eine Liste von Spaltennamen mit den entsprechenden Datentypen für jede Spalte:- In der Spalte
protobuf
istencoding
auf „ProtocolBuffer“ und dertype
auf „Cat“ gesetzt. Diecbt
CLI interpretiert und formatiert alle in dieser Spalte gespeicherten Werte als Proto-NachrichtentypCat
. Der Typ muss einem Nachrichtentyp entsprechen, der in einer der .proto-Dateien definiert ist, die für das Feldprotocol_buffer_definition
angegeben sind. - In der Spalte
json
ist das Feldencoding
auf „json“ gesetzt. Dercbt
interpretiert und formatiert alle in dieser Spalte gespeicherten Werte als JSON-Struktur.
- In der Spalte
Andere Felder, die Sie angeben können:
default_encoding
: Dieses Feld definiert eine Standardformatierung für alle Spalten in einer Tabelle oder alle Spalten in einer Spaltenfamilie.default_type
: Dieses Feld definiert einen Standarddatentyp für Protokollpuffer-, Big-Endian- und Little-Endian-codierte Spalten.families
: Dieses Feld definiert Codierungen und Typen für alle Spalten in einer Spaltenfamilie. Sie können einedefault_encoding
unddefault_type
für eine Spaltenfamilie angeben. Sie können diese Codierungen auch auf Spaltenebene überschreiben. Geben Sie dazu das Feldcolumns
an, das Spalten nach Namen mit der entsprechenden Codierung und Datentypen auflistet, wie im folgenden Snippet gezeigt:families: family1: default_encoding: BigEndian default_type: INT64 columns: address: encoding: PROTO type: tutorial.Person
Unterstützte Datentypen
Die cbt
-Befehlszeile unterstützt die Formatierung für mehrere komplexe Datentypen. In der folgenden Tabelle sind die unterstützten Datentypen und Strings aufgeführt, die in der YAML-Datei für jeden Listentyp bereitgestellt werden sollen. Bei den Stringwerten wird nicht zwischen Groß- und Kleinschreibung unterschieden.
Datentyp | Formatierungswert für YAML |
---|---|
Hexadezimal | Hex , H |
Big-endian | BigEndian , B |
Little-endian | LittleEndian , L |
Protokollpuffer | ProtocolBuffer , P , PROTO |
JSON | JSON , J |
Tabelle 1. Datentypen, die für die Formatierung in der cbt
-Ausgabe unterstützt werden.
- Die hexadezimale Codierung ist vom Typ unabhängig. Daten werden als Hexadezimal-Rohdaten der gespeicherten Daten angezeigt.
- Verfügbare Typen für Big-Endian- und Little-Endian-Codierungen sind
int8
,int16
,int32
,int64
,uint8
,uint16
,uint32
,uint64
,float32
undfloat64
. Die Länge der gespeicherten Daten muss ein Vielfaches der Typgröße in Byte sein. Daten werden als Skalare angezeigt, wenn die gespeicherte Länge mit der Typgröße übereinstimmt, oder andernfalls als Arrays. Bei Typnamen wird die Groß- und Kleinschreibung nicht berücksichtigt. - Die für die Protokollpuffercodierung angegebenen Typen müssen mit den in den bereitgestellten Protokollpufferdefinitionsdateien definierten Nachrichtentypen übereinstimmen. Bei Typen wird die Groß- und Kleinschreibung nicht berücksichtigt. Wenn kein Typ angegeben ist, wird standardmäßig der Spaltenname für die angezeigten Spaltendaten verwendet.
- Bei den Formatierungswerten für YAML wird nicht zwischen Groß- und Kleinschreibung unterschieden.