Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Weitere Anweisungen in Google Standard-SQL

EXPORT DATA-Anweisung

Mit der EXPORT DATA-Anweisung werden die Ergebnisse einer Abfrage an einen externen Speicherort exportiert. Der Speicherort muss Cloud Storage sein. Weitere Informationen hierzu finden Sie unter Tabellendaten exportieren.

EXPORT DATA
[WITH CONNECTION connection_name]
OPTIONS (export_option_list) AS
query_statement

Dabei gilt:

  • connection_name gibt eine Verbindungsressource an, die Anmeldedaten für den Zugriff auf die externen Daten enthält. Geben Sie den Verbindungsnamen im Format PROJECT_ID.LOCATION.CONNECTION_ID an. Wenn die Projekt-ID oder der Standort einen Bindestrich enthält, setzen Sie den Verbindungsnamen in Graviszeichen (`).

  • export_option_list gibt eine Liste von Optionen für den Exportvorgang an, einschließlich des URI des Ziels.

  • query_statement ist eine SQL-Abfrage. Das Abfrageergebnis wird zum externen Ziel exportiert.

Geben Sie mit der Option format das Format der exportierten Daten an. Es gelten folgende Einschränkungen:

  • Verschachtelte und wiederkehrende Daten können nicht im CSV-Format exportiert werden.
  • Wenn Sie Daten in das JSON-Format exportieren, werden INT64-Datentypen als JSON-Strings codiert, um die 64-Bit-Genauigkeit zu gewährleisten.

export_option_list

In der Optionsliste sind die Optionen für den Exportvorgang angegeben. Geben Sie die Optionsliste im folgenden Format an: NAME=VALUE, ....

Die Optionen uri und format sind erforderlich.

Optionen
compression

STRING

Gibt ein Komprimierungsformat an. Wenn keine Angabe gemacht wird, sind die exportierten Dateien nicht komprimiert. Diese Werte werden unterstützt: GZIP, DEFLATE, SNAPPY.

field_delimiter

STRING

Das Trennzeichen, das zum Trennen von Feldern verwendet wird. Standardeinstellung: ',' (Komma)

Gilt für: CSV.

format

STRING

Erforderlich. Das Format der exportierten Daten. Diese Werte werden unterstützt: AVRO, CSV, JSON, PARQUET.

header

BOOL

Beim Wert true werden Spaltenüberschriften für die erste Zeile jeder Datendatei generiert. Standardeinstellung: false.

Gilt für: CSV.

overwrite

BOOL

Beim Wert true wird der Zielspeicherort überschrieben. Andernfalls gibt die Anweisung einen Fehler zurück, wenn der Zielspeicherort nicht leer ist. Standardeinstellung: false

uri

STRING

Erforderlich. Der Ziel-URI für den Export. Die Option uri muss ein URI mit einem einzelnen Platzhalter sein, wie unter Daten in eine oder mehrere Dateien exportieren beschrieben.

Beispiel: "gs://bucket/path/file_*.csv"

use_avro_logical_types

BOOL

Gibt an, ob beim Export der Typen TIMESTAMP, DATETIME, TIME und DATE geeignete logische AVRO-Typen zu verwenden sind.

Gilt für AVRO. Weitere Details finden Sie unter https://cloud.google.com/bigquery/docs/exporting-data#avro_export_details.

Beispiele

Daten in das CSV-Format exportieren

Im folgenden Beispiel werden Daten in eine CSV-Datei exportiert. Es enthält Optionen zum Überschreiben des Zielspeicherorts, zum Schreiben von Überschriftenzeilen und zur Verwendung von ';' als Trennzeichen.

EXPORT DATA OPTIONS(
  uri='gs://bucket/folder/*.csv',
  format='CSV',
  overwrite=true,
  header=true,
  field_delimiter=';') AS
SELECT field1, field2 FROM mydataset.table1 ORDER BY field1 LIMIT 10

Daten in das Avro-Format exportieren

Im folgenden Beispiel werden Daten mithilfe der Snappy-Komprimierung in das Avro-Format exportiert.

EXPORT DATA OPTIONS(
  uri='gs://bucket/folder/*',
  format='AVRO',
  compression='SNAPPY') AS
SELECT field1, field2 FROM mydataset.table1 ORDER BY field1 LIMIT 10

Daten in das Parquet-Format exportieren

Im folgenden Beispiel werden Daten in das Parquet-Format exportiert. Dazu gehört die Option, den Zielspeicherort zu überschreiben.

EXPORT DATA OPTIONS(
  uri='gs://bucket/folder/*',
  format='PARQUET',
  overwrite=true) AS
SELECT field1, field2 FROM mydataset.table1 ORDER BY field1 LIMIT 10

LOAD DATA-Anweisung

Lädt Daten aus einer oder mehreren Dateien in eine Tabelle. Mit der Anweisung können Sie eine neue Tabelle erstellen, Daten an eine vorhandene Tabelle anfügen oder eine vorhandene Tabelle überschreiben.

LOAD DATA {OVERWRITE|INTO} [[project_name.]dataset_name.]table_name
[(
  column[, ...]
)]
[PARTITION BY partition_expression]
[CLUSTER BY clustering_column_list]
[OPTIONS (table_option_list)]
FROM FILES(load_option_list)
[WITH PARTITION COLUMNS
  [(partition_column_list)]
]
[WITH CONNECTION connection_name]

column_list: column[, ...]

partition_column_list: partition_column_name, partition_column_type[, ...]

Wobei:

  • INTO: Wenn eine Tabelle mit diesem Namen bereits vorhanden ist, hängt die Anweisung Daten an die Tabelle an.

  • OVERWRITE: Wenn eine Tabelle mit diesem Namen bereits vorhanden ist, überschreibt die Anweisung die Tabelle.

  • project_name der Name des Projekts für die Tabelle. Die Standardeinstellung ist das Projekt, das diese DDL-Abfrage ausführt.

  • dataset_name der Name des Datensatzes für die Tabelle.

  • table_name ist der Name der Tabelle.

  • column_list enthält die Schemainformationen der Tabelle als Liste von Tabellenspalten. Weitere Informationen zu Tabellenschemas finden Sie unter Schema angeben. Wenn Sie kein Schema angeben, verwendet BigQuery die automatische Schemaerkennung, um das Schema abzuleiten.

  • partition_expression gibt die Tabellenpartitionierung beim Erstellen einer neuen Tabelle an. Die Anweisung LOAD DATA unterstützt keine Partitionierung nach Aufnahmezeit. Wenn partition_expression _PARTITIONDATE oder _PARTITIONTIME enthält, schlägt die Anweisung mit der Fehlermeldung "Unrecognized name: _PARTITIONTIME fehl.

    Wenn Sie Daten in eine vorhandene partitionierte Tabelle laden, müssen Sie die Klausel PARTITION BY in die vorhandene Partitionierungsspezifikation der Tabelle aufnehmen.

  • clustering_column_list gibt das Tabellen-Clustering beim Erstellen einer neuen Tabelle an. Der Wert ist eine durch Kommas getrennte Liste von Spaltennamen mit bis zu vier Spalten.

  • table_option_list gibt Optionen zum Erstellen der Tabelle an. Wenn Sie diese Klausel einbinden und die Tabelle bereits vorhanden ist, müssen die Optionen mit der vorhandenen Tabellenspezifikation übereinstimmen.

  • partition_column_list ist eine Liste externer Partitionierungsspalten.

  • connection_name ist der Verbindungsname, mit dem die Quelldateien aus einer externen Datenquelle gelesen werden.

  • load_option_list gibt Optionen zum Laden der Daten an.

Wenn keine Tabelle mit dem angegebenen Namen vorhanden ist, erstellt die Anweisung eine neue Tabelle. Wenn eine Tabelle bereits mit dem angegebenen Namen vorhanden ist, hängt das Verhalten vom Schlüsselwort INTO oder OVERWRITE ab. Das Schlüsselwort INTO hängt die Daten an die Tabelle an und das Schlüsselwort OVERWRITE überschreibt die Tabelle.

Wenn Ihre externen Daten ein von Hive partitioniertes Layout verwenden, fügen Sie die Klausel WITH PARTITION COLUMNS hinzu. Wenn Sie die WITH PARTITION COLUMNS-Klausel ohne partition_column_list einfügen, leitet BigQuery die Partitionierung aus dem Datenlayout ab. Wenn Sie sowohl column_list als auch WITH PARTITION COLUMNS angeben, ist partition_column_list erforderlich.

table_option_list

Mit der Optionsliste können Sie Tabellenoptionen wie ein Label oder eine Ablaufzeit festlegen. Sie haben auch die Möglichkeit, mehrere Optionen mithilfe einer durch Kommas getrennten Liste anzugeben.

Eine Tabellenoptionsliste muss im folgenden Format angegeben werden:

NAME=VALUE, ...

NAME und VALUE müssen eine der folgenden Kombinationen sein:

NAME VALUE Details
expiration_timestamp TIMESTAMP

Beispiel: expiration_timestamp=TIMESTAMP "2025-01-01 00:00:00 UTC"

Dieses Attribut entspricht dem Attribut expirationTime der Tabellenressource.

partition_expiration_days

FLOAT64

Beispiel: partition_expiration_days=7

Legt den Partitionsablauf in Tagen fest. Weitere Informationen finden Sie unter Partitionsablauf festlegen. Standardmäßig laufen Partitionen nicht ab.

Dieses Attribut entspricht dem Attribut timePartitioning.expirationMs der Tabellenressource, verwendet jedoch Tage anstelle von Millisekunden. Ein Tag entspricht 86.400.000 Millisekunden oder 24 Stunden.

Dieses Attribut kann nur festgelegt werden, wenn die Tabelle partitioniert ist.

require_partition_filter

BOOL

Beispiel: require_partition_filter=true

Gibt an, ob Abfragen für diese Tabelle einen Prädikatfilter enthalten müssen, der nach der Partitionierungsspalte filtert. Weitere Informationen finden Sie unter Anforderungen an Partitionsfilter festlegen. Der Standardwert ist false.

Dieses Attribut entspricht dem Attribut timePartitioning.requirePartitionFilter der Tabellenressource.

Dieses Attribut kann nur festgelegt werden, wenn die Tabelle partitioniert ist.

friendly_name

STRING

Beispiel: friendly_name="my_table"

Dieses Attribut entspricht dem Attribut friendlyName der Tabellenressource.

description

STRING

Beispiel: description="a table that expires in 2025"

Dieses Attribut entspricht dem Attribut description der Tabellenressource.

labels

ARRAY<STRUCT<STRING, STRING>>

Beispiel: labels=[("org_unit", "development")]

Dieses Attribut entspricht dem Attribut labels der Tabellenressource.

VALUE ist ein konstanter Ausdruck, der nur Literale, Abfrageparameter und Skalarfunktionen enthält.

Der konstante Ausdruck darf Folgendes nicht enthalten:

  • Einen Verweis auf eine Tabelle
  • Unterabfragen oder SQL-Anweisungen wie SELECT, CREATE oder UPDATE
  • Benutzerdefinierte Funktionen, Aggregatfunktionen oder Analysefunktionen
  • Die folgenden Skalarfunktionen:
    • ARRAY_TO_STRING
    • REPLACE
    • REGEXP_REPLACE
    • RAND
    • FORMAT
    • LPAD
    • RPAD
    • REPEAT
    • SESSION_USER
    • GENERATE_ARRAY
    • GENERATE_DATE_ARRAY

load_option_list

Gibt Optionen zum Laden von Daten aus externen Dateien an. Die Optionen format und uris sind erforderlich. Geben Sie die Optionsliste im folgenden Format an: NAME=VALUE, ....

Optionen
allow_jagged_rows

BOOL

Bei true werden Zeilen ohne nachgestellte optionale Spalten zugelassen.

Gilt für CSV-Daten.

allow_quoted_newlines

BOOL

Bei true werden in Anführungszeichen eingeschlossene Datenabschnitte mit Zeilenumbruchzeichen in der Datei zugelassen.

Gilt für CSV-Daten.

compression

STRING

Komprimierungstyp der Datenquelle. Diese Werte werden unterstützt: GZIP Wenn keine Angabe erfolgt, ist die Datenquelle unkomprimiert.

Gilt für CSV- und JSON-Daten.

enable_logical_types

BOOL

Bei true werden logische Avro-Typen in die entsprechenden SQL-Typen konvertiert. Weitere Informationen finden Sie unter Logische Typen.

Gilt für Avro-Daten.

enum_as_string

BOOL

Wenn true, wird der logische Parquet-ENUM-Typ standardmäßig als STRING und nicht als BYTES abgeleitet.

Gilt für Parquet-Daten.

enable_list_inference

BOOL

Verwenden Sie bei true die Schemainferenz speziell für den logischen Parquet-LIST-Typ.

Gilt für Parquet-Daten.

encoding

STRING

Die Zeichencodierung der Daten. Unterstützte Werte sind: UTF8 (oder UTF-8), ISO_8859_1 (oder ISO-8859-1).

Gilt für CSV-Daten.

field_delimiter

STRING

Das Trennzeichen für Felder in einer CSV-Datei.

Gilt für CSV-Daten.

format

STRING

Das Format der externen Daten. Unterstützte Werte für CREATE EXTERNAL TABLE beinhalten: AVRO, CSV, DATASTORE_BACKUP, GOOGLE_SHEETS, NEWLINE_DELIMITED_JSON (oder JSON), ORC, PARQUET.

Unterstützte Werte für LOAD DATA beinhalten: AVRO, CSV, NEWLINE_DELIMITED_JSON (oder JSON), ORC, PARQUET.

Der Wert JSON entspricht NEWLINE_DELIMITED_JSON.

decimal_target_types

ARRAY<STRING>

Bestimmt, wie ein Decimal-Typ konvertiert wird. Entspricht ExternalDataConfiguration.decimal_target_types

Beispiel: ["NUMERIC", "BIGNUMERIC"].

json_extension

STRING

Gibt für JSON-Daten ein bestimmtes JSON-Austauschformat an. Wenn nicht angegeben, liest BigQuery die Daten als generische JSON-Einträge.

Diese Werte werden unterstützt:
GEOJSON. Durch Zeilenumbruch getrennte GeoJSON-Daten. Weitere Informationen finden Sie unter Externe Tabelle aus einer durch Zeilenumbruch getrennten GeoJSON-Datei erstellen.

hive_partition_uri_prefix

STRING

Ein gemeinsames Präfix für alle Quell-URIs, bevor die Codierung des Partitionierungsschlüssels beginnt. Gilt nur für mit Hive partitionierte Tabellen.

Gilt für Avro-, CSV-, JSON-, Parquet- und ORC-Daten.

Beispiel: "gs://bucket/path".

ignore_unknown_values

BOOL

Bei true werden zusätzliche Werte ignoriert, die nicht im Tabellenschema enthalten sind, ohne dass ein Fehler zurückgegeben wird.

Gilt für CSV- und JSON-Daten.

max_bad_records

INT64

Die maximale Anzahl fehlerhafter Datensätze, die beim Lesen der Daten ignoriert werden.

Gilt für CSV-, JSON- und Google Tabellen-Daten.

null_marker

STRING

Der String, der NULL-Werte in einer CSV-Datei darstellt.

Gilt für CSV-Daten.

preserve_ascii_control_characters

BOOL

Bei true werden die eingebetteten ASCII-Steuerzeichen, die die ersten 32 Zeichen in der ASCII-Tabelle sind, von „\x00” bis „\x1F” beibehalten.

Gilt für CSV-Daten.

quote

STRING

Der String, der zum Kennzeichnen von Datenabschnitten in einer CSV-Datei verwendet wird. Wenn Ihre Daten Zeilenumbruchzeichen in Anführungszeichen enthalten, setzen Sie auch das Attribut allow_quoted_newlines auf true.

Gilt für CSV-Daten.

skip_leading_rows

INT64

Die Anzahl der Zeilen am Anfang einer Datei, die beim Lesen der Daten übersprungen werden sollen.

Gilt für CSV- und Google Tabellen-Daten.

uris

ARRAY<STRING>

Ein Array von voll qualifizierten URIs für die externen Datenspeicherorte.

Beispiel: ["gs://bucket/path/*"].

Beispiele

Daten in eine Tabelle laden

Im folgenden Beispiel wird eine Avro-Datei in eine Tabelle geladen. Avro ist ein selbstbeschreibendes Format, sodass BigQuery das Schema ableitet.

LOAD DATA INTO mydataset.table1
  FROM FILES(
    format='AVRO',
    uris = ['gs://bucket/path/file.avro']
  )

Im folgenden Beispiel werden zwei CSV-Dateien mithilfe der Schemaerkennung in eine Tabelle geladen.

LOAD DATA INTO mydataset.table1
  FROM FILES(
    format='CSV',
    uris = ['gs://bucket/path/file1.csv', 'gs://bucket/path/file2.csv']
  )

Daten mithilfe eines Schemas laden

Im folgenden Beispiel wird eine CSV-Datei mit einem angegebenen Tabellenschema in eine Tabelle geladen.

LOAD DATA INTO mydataset.table1(x INT64, y STRING)
  FROM FILES(
    skip_leading_rows=1,
    format='CSV',
    uris = ['gs://bucket/path/file.csv']
  )

Optionen beim Erstellen einer neuen Tabelle festlegen

Im folgenden Beispiel wird eine neue Tabelle mit einer Beschreibung und einer Ablaufzeit erstellt.

LOAD DATA INTO mydataset.table1
  OPTIONS(
    description="my table",
    expiration_timestamp="2025-01-01 00:00:00 UTC"
  )
  FROM FILES(
    format='AVRO',
    uris = ['gs://bucket/path/file.avro']
  )

Vorhandene Datei überschreiben

Im folgenden Beispiel wird eine vorhandene Datei überschrieben.

LOAD DATA OVERWRITE mydataset.table1
  FROM FILES(
    format='AVRO',
    uris = ['gs://bucket/path/file.avro']
  )

Tabellenpartitionierung und -clustering angeben

Im folgenden Beispiel wird eine Tabelle erstellt, die nach dem Feld transaction_date partitioniert und nach dem Feld customer_id geclustert ist. Außerdem werden die Partitionen so konfiguriert, dass sie nach drei Tagen ablaufen.

LOAD DATA INTO mydataset.table1
  PARTITION BY transaction_date
  CLUSTER BY customer_id
  OPTIONS(
    partition_expiration_days=3
  )
  FROM FILES(
    format='AVRO',
    uris = ['gs://bucket/path/file.avro']
  )

Extern partitionierte Datei laden

Im folgenden Beispiel wird eine Reihe externer Dateien mit einem Hive-Partitionierungslayout geladen.

LOAD DATA INTO mydataset.table1
  FROM FILES(
    format='AVRO',
    uris = ['gs://bucket/path/*'],
    hive_partition_uri_prefix='gs://bucket/path'
  )
  WITH PARTITION COLUMNS(
    field_1 STRING, -- column order must match the external path
    field_2 INT64
  )

Im folgenden Beispiel wird das Partitionierungslayout abgeleitet:

LOAD DATA INTO mydataset.table1
  FROM FILES(
    format='AVRO',
    uris = ['gs://bucket/path/*'],
    hive_partition_uri_prefix='gs://bucket/path'
  )
  WITH PARTITION COLUMNS

Wenn Sie sowohl column_list als auch WITH PARTITION COLUMNS angeben, müssen Sie die Partitionierungsspalten explizit auflisten. Die folgende Abfrage gibt beispielsweise einen Fehler zurück:

-- This query returns an error.
LOAD DATA INTO mydataset.table1
  (
    x INT64, -- column_list is given but the partition column list is missing
    y STRING
  )
  FROM FILES(
    format='AVRO',
    uris = ['gs://bucket/path/*'],
    hive_partition_uri_prefix='gs://bucket/path'
  )
  WITH PARTITION COLUMNS