Tool: execute_sql
Führe eine SQL-Abfrage im Projekt aus und gib das Ergebnis zurück.
Dieses Tool ist auf SELECT-Erklärungen beschränkt. INSERT-, UPDATE- und DELETE-Anweisungen und gespeicherte Prozeduren sind nicht zulässig. Wenn die Abfrage keine SELECT-Anweisung enthält, wird ein Fehler zurückgegeben. Informationen zum Erstellen von Abfragen finden Sie in der GoogleSQL-Dokumentation.
Das execute_sql-Tool kann auch Nebeneffekte haben, wenn in der Abfrage Remote-Funktionen oder Python-UDFs aufgerufen werden.
Alle Abfragen, die mit dem Tool execute_sql ausgeführt werden, haben ein Label, das das Tool als Quelle identifiziert. Mit diesem Label können Sie die Anfragen mit dem Label- und Wertepaar goog-mcp-server: true filtern.
Abfragen werden dem Projekt in Rechnung gestellt, das im Feld project_id angegeben ist.
Im folgenden Beispiel wird gezeigt, wie Sie mit curl das MCP-Tool execute_sql aufrufen.
| Curl-Anfrage |
|---|
curl --location 'https://bigquery.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "execute_sql", "arguments": { // provide these details according to the tool's MCP specification } }, "jsonrpc": "2.0", "id": 1 }' |
Eingabeschema
Führt eine BigQuery-SQL-Abfrage synchron aus und gibt Ergebnisse zurück, wenn die Abfrage innerhalb eines bestimmten Zeitlimits abgeschlossen wird.
| JSON-Darstellung |
|---|
{ "projectId": string, "query": string, "dryRun": boolean } |
| Felder | |
|---|---|
projectId |
Erforderlich. Das Projekt, das für die Ausführung von Abfragen und die Abrechnung verwendet wird. |
query |
Erforderlich. Die auszuführende Abfrage in Form einer GoogleSQL-Abfrage. |
dryRun |
Optional. Wenn auf „true“ gesetzt, wird der Job nicht von BigQuery ausgeführt. Wenn die Abfrage gültig ist, gibt BigQuery stattdessen Statistiken zum Job zurück, z. B. die Anzahl der zu verarbeitenden Byte. Wenn die Abfrage ungültig ist, wird ein Fehler zurückgegeben. Der Standardwert ist „false“. |
Ausgabeschema
Antwort für eine BigQuery-SQL-Abfrage.
| JSON-Darstellung |
|---|
{ "schema": { object ( |
| Felder | |
|---|---|
schema |
Das Schema der Ergebnisse. Nur vorhanden, wenn die Abfrage erfolgreich abgeschlossen wurde. |
rows[] |
Ein Objekt mit so vielen Ergebnissen, wie in der maximal zulässigen Antwortgröße enthalten sein können. Wenn Sie zusätzliche Zeilen abrufen möchten, können Sie GetQueryResults aufrufen und die oben zurückgegebene jobReference angeben. |
jobComplete |
Gibt an, ob die Abfrage abgeschlossen wurde. Wenn „rows“ oder „totalRows“ vorhanden sind, ist dieser Wert immer „true“. Wenn dieser Wert „false“ ist, ist „totalRows“ nicht verfügbar. |
errors[] |
Nur Ausgabe. Die ersten Fehler oder Warnungen, die beim Ausführen des Jobs aufgetreten sind. Die endgültige Meldung enthält die Anzahl der Fehler, die zum Stoppen des Vorgangs geführt haben. Fehler hier bedeuten nicht unbedingt, dass der Job abgeschlossen wurde oder fehlgeschlagen ist. Weitere Informationen zu Fehlermeldungen finden Sie unter Fehlermeldungen. |
| JSON-Darstellung |
|---|
{ "fields": [ { object ( |
| Felder | |
|---|---|
fields[] |
Beschreibt die Felder in einer Tabelle. |
foreignTypeInfo |
Optional. Gibt Metadaten der Definition des externen Datentyps im Feldschema ( |
| JSON-Darstellung |
|---|
{ "name": string, "type": string, "mode": string, "fields": [ { object ( |
| Felder | |
|---|---|
name |
Erforderlich. Der Feldname. Der Name darf nur Buchstaben (a–z, A–Z), Ziffern (0–9) und Unterstriche (_) enthalten und muss mit einem Buchstaben oder einem Unterstrich beginnen. Die maximale Länge beträgt 300 Zeichen. |
type |
Erforderlich. Der Datentyp des Felds. Mögliche Werte:
Die Verwendung von RECORD/STRUCT gibt an, dass das Feld ein verschachteltes Schema enthält. |
mode |
Optional. Der Feldmodus. Mögliche Werte sind NULLABLE, REQUIRED und REPEATED. Der Standardwert ist NULLABLE. |
fields[] |
Optional. Beschreibt die verschachtelten Schemafelder, wenn das Attribut „type“ auf „RECORD“ gesetzt ist. |
description |
Optional. Die Feldbeschreibung. Die maximale Länge beträgt 1.024 Zeichen. |
policyTags |
Optional. Die Richtlinien-Tags, die an dieses Feld angehängt sind und für die Zugriffssteuerung auf Feldebene verwendet werden. Wenn nichts anderes festgelegt ist, wird standardmäßig „empty policy_tags“ verwendet. |
dataPolicies[] |
Optional. Datenrichtlinien, die diesem Feld zugeordnet sind und für die Zugriffssteuerung auf Feldebene verwendet werden. |
nameAlternative[] |
Dieses Feld sollte nicht verwendet werden. |
maxLength |
Optional. Maximale Länge der Werte dieses Felds für STRINGS oder BYTES. Wenn „max_length“ nicht angegeben ist, wird für dieses Feld keine maximale Länge festgelegt. Wenn type = „STRING“, dann steht max_length für die maximale UTF-8-Länge von Strings in diesem Feld. Wenn type = „BYTES“, dann stellt max_length die maximale Anzahl von Byte in diesem Feld dar. Dieses Feld darf nicht festgelegt werden, wenn type ≠ „STRING“ und ≠ „BYTES“. |
precision |
Optional. Einschränkungen für die Genauigkeit (maximale Anzahl der Ziffern insgesamt in Basis 10) und die Skalierung (maximale Anzahl der Ziffern im Bruchteil in Basis 10) für Werte dieses Felds für NUMERIC oder BIGNUMERIC. Es ist ungültig, Genauigkeit oder Skalierung festzulegen, wenn type ≠ „NUMERIC“ und ≠ „BIGNUMERIC“. Wenn keine Genauigkeit und Skalierung angegeben sind, wird für dieses Feld keine Einschränkung des Wertebereichs festgelegt, sofern Werte vom Typ zulässig sind. Werte dieses NUMERIC- oder BIGNUMERIC-Felds müssen in diesem Bereich liegen, wenn:
Zulässige Werte für Genauigkeit und Skalierung, wenn beide angegeben sind:
Zulässige Werte für die Genauigkeit, wenn nur die Genauigkeit, nicht aber die Skalierung angegeben wird (und die Skalierung daher als null interpretiert wird):
Wenn die Skalierung, aber nicht die Genauigkeit angegeben wird, ist das ungültig. |
scale |
Optional. Weitere Informationen zur Genauigkeit finden Sie in der Dokumentation. |
timestampPrecision |
Optional. Genauigkeit (maximale Anzahl der Gesamtziffern in Basis 10) für Sekunden des TIMESTAMP-Typs. Mögliche Werte sind: * 6 (Standard für den TIMESTAMP-Typ mit Mikrosekundengenauigkeit) * 12 (für den TIMESTAMP-Typ mit Pikosekundengenauigkeit) |
roundingMode |
Optional. Gibt den Rundungsmodus an, der beim Speichern von Werten des Typs NUMERIC und BIGNUMERIC verwendet werden soll. |
collation |
Optional. Die Sortierung von Feldern kann nur festgelegt werden, wenn der Feldtyp STRING ist. Folgende Werte werden unterstützt:
|
defaultValueExpression |
Optional. Ein SQL-Ausdruck, mit dem der Standardwert für dieses Feld angegeben wird. |
rangeElementType |
Optional. Der Untertyp des Bereichs, wenn der Typ dieses Felds „RANGE“ ist. Wenn der Typ RANGE ist, ist dieses Feld erforderlich. Für den Feld-Elementtyp sind folgende Werte möglich:
|
foreignTypeDefinition |
Optional. Definition des fremden Datentyps. Gilt nur für Schemafelder der obersten Ebene (nicht für verschachtelte Felder). Wenn der Typ FOREIGN (ausländisch) ist, ist dieses Feld erforderlich. |
| JSON-Darstellung |
|---|
{ "value": string } |
| Felder | |
|---|---|
value |
Stringwert. |
| JSON-Darstellung |
|---|
{ "names": [ string ] } |
| Felder | |
|---|---|
names[] |
Eine Liste mit Ressourcennamen von Richtlinien-Tags. Beispiel: „projects/1/locations/eu/taxonomies/2/policyTags/3“. Derzeit ist maximal ein Richtlinien-Tag zulässig. |
| JSON-Darstellung |
|---|
{ // Union field |
| Felder | |
|---|---|
Union-Feld Für |
|
name |
Ressourcenname der Datenrichtlinie im Format „projects/project_id/locations/location_id/dataPolicies/data_policy_id“. |
| JSON-Darstellung |
|---|
{ "value": string } |
| Felder | |
|---|---|
value |
Der int64-Wert. |
| JSON-Darstellung |
|---|
{ "type": string } |
| Felder | |
|---|---|
type |
Erforderlich. Der Typ eines Feldelements. Weitere Informationen finden Sie unter |
| JSON-Darstellung |
|---|
{
"typeSystem": enum ( |
| Felder | |
|---|---|
typeSystem |
Erforderlich. Gibt das System an, das den externen Datentyp definiert. |
| JSON-Darstellung |
|---|
{ "fields": { string: value, ... } } |
| Felder | |
|---|---|
fields |
Ungeordnete Zuordnung von dynamisch typisierten Werten. Ein Objekt, das eine Liste von |
| JSON-Darstellung |
|---|
{ "key": string, "value": value } |
| Felder | |
|---|---|
key |
|
value |
|
| JSON-Darstellung |
|---|
{ // Union field |
| Felder | |
|---|---|
Union-Feld kind. Die Art des Werts. Für kind ist nur einer der folgenden Werte zulässig: |
|
nullValue |
Stellt einen Nullwert dar. |
numberValue |
Stellt einen Double-Wert dar. |
stringValue |
Stellt einen Stringwert dar. |
boolValue |
Stellt einen booleschen Wert dar. |
structValue |
Stellt einen strukturierten Wert dar. |
listValue |
Stellt eine wiederholte |
| JSON-Darstellung |
|---|
{ "values": [ value ] } |
| Felder | |
|---|---|
values[] |
Wiederholtes Feld mit dynamisch typisierten Werten. |
| JSON-Darstellung |
|---|
{ "value": boolean } |
| Felder | |
|---|---|
value |
Der boolesche Wert. |
| JSON-Darstellung |
|---|
{ "reason": string, "location": string, "debugInfo": string, "message": string } |
| Felder | |
|---|---|
reason |
Ein kurzer Fehlercode, der den Fehler zusammenfasst. |
location |
Gibt an, wo der Fehler aufgetreten ist, sofern vorhanden. |
debugInfo |
Informationen zur Fehlerbehebung. Diese Property ist intern bei Google und sollte nicht verwendet werden. |
message |
Eine für Menschen lesbare Beschreibung des Fehlers. |
Tool-Annotationen
Destruktiver Hinweis: ✅ | Idempotenter Hinweis: ❌ | Nur-Lese-Hinweis: ❌ | Open-World-Hinweis: ✅