Tabellendefinitionsdatei für eine externe Datenquelle erstellen

Auf dieser Seite wird gezeigt, wie Sie eine Tabellendefinitionsdatei für eine externe Datenquelle erstellen. Eine externe Datenquelle (auch "föderierte Datenquelle" genannt) ist eine Datenquelle, für die auch dann direkt eine Abfrage ausgeführt werden kann, wenn die Daten nicht in BigQuery gespeichert sind.

Tabellendefinitionsdateien

Eine Tabellendefinitionsdatei enthält die Schemadefinition und Metadaten einer externen Tabelle, z. B. das Datenformat und zugehörige Eigenschaften. Beim Erstellen einer Tabellendefinitionsdatei können Sie die automatische Schemaerkennung verwenden, um das Schema für eine externe Datenquelle zu definieren. Sie können das Schema inline (in der Befehlszeile) einfügen oder eine JSON-Datei hinzufügen, die die Schemadefinition enthält.

Tabellendefinitionsdateien werden mit dem bq-Befehlszeilentool verwendet. Wenn Sie die REST API nutzen, werden die Attribute in einer Tabellendefinitionsdatei auch für das Erstellen einer ExternalDataConfiguration-Konfiguration angewendet. Beim Erstellen einer externen Tabelle mithilfe der Cloud Console werden keine Tabellendefinitionsdateien verwendet.

Tabellendefinitionsdateien können für die folgenden externen Datenquellen erstellt werden:

  • Cloud Storage

    • Kommagetrennte Werte (CSV)
    • Durch Zeilenumbruch getrenntes JSON
    • Avro-Dateien
    • Datastore-Exportdateien
    • ORC-Dateien
    • Parquet-Dateien
    • Firestore-Exportdateien
  • Google Drive

    • Kommagetrennte Werte (CSV)
    • Durch Zeilenumbruch getrenntes JSON
    • Avro-Dateien
    • Google Tabellen
  • Cloud Bigtable

Hinweis

Zum Erstellen einer Tabellendefinitionsdatei benötigen Sie den URI für die Datenquelle:

Permanente und temporäre externe Tabellen

Sie können eine externe Datenquelle in BigQuery mithilfe einer permanenten Tabelle oder einer temporären Tabelle abfragen. Eine permanente Tabelle ist eine Tabelle, die in einem Dataset erstellt und mit Ihrer externen Datenquelle verknüpft wird. Da die Tabelle permanent ist, können Sie sie mithilfe von Zugriffssteuerungen für andere Nutzer freigeben, die ebenfalls Zugriff auf die zugrunde liegende externe Datenquelle haben. Außerdem können Sie die Tabelle jederzeit abfragen.

Wenn Sie eine externe Datenquelle mithilfe einer temporären Tabelle abfragen, senden Sie einen Befehl, der eine Abfrage enthält und durch den eine nicht permanente, mit der externen Datenquelle verknüpfte Tabelle erstellt wird. Wenn Sie eine temporäre Tabelle verwenden, erstellen Sie keine Tabelle in einem Ihrer BigQuery-Datasets. Da die Tabelle nicht permanent in einem Dataset gespeichert wird, kann sie nicht für andere Nutzer freigegeben werden. Das Abfragen einer externen Datenquelle mithilfe einer temporären Tabelle eignet sich für einmalige Ad-hoc-Abfragen von externen Daten sowie für ETL-Vorgänge (Extraktion, Transformation, Laden).

Sie können eine Tabellendefinitionsdatei verwenden, um eine permanente oder temporäre externe Tabelle zu beschreiben.

Tabellendefinition mithilfe der automatischen Schemaerkennung erstellen

Bei Angabe einer CSV-, JSON- oder Google Tabellen-Datei ohne Inline-Schemabeschreibung und ohne Schemadatei können Sie mit dem Flag --autodetect und dem Wert true für die Option "autodetect" die automatische Schemaerkennung in der Tabellendefinitionsdatei festlegen. Wenn diese aktiviert ist, versucht BigQuery, das Schema automatisch zu ermitteln. Weitere Informationen finden Sie unter Automatische Schemaerkennung für externe Datenquellen.

Sie können die automatische Schemaerkennung verwenden, wenn Sie Tabellendefinitionen für Folgendes erstellen:

  • JSON-Dateien, die in Cloud Storage oder Google Drive gespeichert sind
  • CSV-Dateien, die in Cloud Storage oder Google Drive gespeichert sind
  • Google Tabellen-Dateien, die in Google Drive gespeichert sind

cl

So erstellen Sie mit dem bq-Befehlszeilentool eine Tabellendefinition für eine Cloud Storage-Datenquelle:

  1. Verwenden Sie den Befehl mkdef des bq-Tools mit dem Flag --autodetect, um eine Tabellendefinition zu erstellen. Der Befehl mkdef erzeugt eine Tabellendefinitionsdatei im JSON-Format. Im folgenden Beispiel wird eine Tabellendefinition erstellt und die Ausgabe in die Datei /tmp/file_name geschrieben.

    Ersetzen Sie im Befehl Folgendes:

    • source_format durch das Dateiformat NEWLINE_DELIMITED_JSON, CSV oder GOOGLE_SHEETS.
    • file_name durch den Namen der Tabellendefinitionsdatei.
    • bucket_uri durch den Cloud Storage-URI, z. B. gs://mybucket/myfile.
    bq mkdef \
    --autodetect \
    --source_format=source_format \
    "bucket_uri" > /tmp/file_name
    
  2. Optional: Öffnen Sie die Tabellendefinitionsdatei in einem Texteditor. So kann die Datei z. B. mit dem Befehl nano /tmp/file_name in Nano geöffnet werden. Die Datei für eine externe CSV-Datenquelle sollte in etwa wie unten dargestellt aussehen. Beachten Sie, dass für "autodetect" der Wert true festgelegt ist.

    {
    "autodetect": true,
    "csvOptions": {
      "allowJaggedRows": false,
      "allowQuotedNewlines": false,
      "encoding": "UTF-8",
      "fieldDelimiter": ",",
      "quote": "\"",
      "skipLeadingRows": 0
    },
    "sourceFormat": "CSV",
    "sourceUris": [
      "bucket_uri"
    ]
    }
    
  3. Optional: Bearbeiten Sie die Tabellendefinitionsdatei manuell, wenn Sie allgemeine Einstellungen wie maxBadRecords oderignoreUnknownValues ändern, hinzufügen oder löschen möchten. Für JSON-Quelldateien sind keine speziellen Konfigurationseinstellungen vorhanden. Dagegen gibt es entsprechende Einstellungen für CSV-Dateien und Google Tabellen-Dateien. Weitere Informationen finden Sie in der API-Referenz unter ExternalDataConfiguration.

Google Drive

So erstellen Sie mit dem bq-Befehlszeilentool eine Tabellendefinition für eine Google Drive-Datenquelle:

  1. Verwenden Sie den Befehl mkdef des bq-Tools mit dem Flag --autodetect, um eine Tabellendefinition zu erstellen. Der Befehl mkdef erzeugt eine Tabellendefinitionsdatei im JSON-Format. Im folgenden Beispiel wird eine Tabellendefinition erstellt und die Ausgabe in die Datei /tmp/file_name geschrieben.

    Ersetzen Sie im Befehl Folgendes:

    • source_format durch das Dateiformat NEWLINE_DELIMITED_JSON, CSV oder GOOGLE_SHEETS.
    • file_name durch den Namen der Tabellendefinitionsdatei.
    • drive_uri durch den Google Drive-URI, z. B. https://drive.google.com/open?id=123ABCD123AbcD123Abcd.
    bq mkdef \
    --autodetect \
    --source_format=source_format \
    "drive_uri" > /tmp/file_name
    
  2. Öffnen Sie die Datei in einem Texteditor. Mit dem Befehl nano /tmp/file_name wird die Datei z. B. in Nano geöffnet. Die Datei sollte für eine externe Google Tabellen-Datenquelle wie unten dargestellt aussehen. Beachten Sie, dass für "autodetect" der Wert true festgelegt ist.

    {
    "autodetect": true,
    "sourceFormat": "GOOGLE_SHEETS",
    "sourceUris": [
      "drive_uri"
    ]
    }
    
  3. Optional: Bearbeiten Sie die Tabellendefinitionsdatei manuell, wenn Sie allgemeine Einstellungen wie maxBadRecords oderignoreUnknownValues ändern, hinzufügen oder löschen möchten. Für JSON-Quelldateien sind keine speziellen Konfigurationseinstellungen vorhanden. Dagegen gibt es entsprechende Einstellungen für CSV-Dateien und Google Tabellen-Dateien. Weitere Informationen finden Sie in der API-Referenz unter ExternalDataConfiguration.

  4. Wenn Sie ein bestimmtes Tabellenblatt oder einen Zellenbereich in einer Google Tabellen-Datei angeben möchten, fügen Sie der Tabellendefinitionsdatei das Attribut range hinzu. Zur Abfrage eines speziellen Tabellenblatts geben Sie den Tabellenblattnamen an. Für die Abfrage eines Zellenbereichs geben Sie den Bereich im Format sheet_name!top_left_cell_id:bottom_right_cell_id an, z. B. "Sheet1!A1:B20". Wenn Sie den Parameter range nicht festlegen, wird das erste Tabellenblatt der Datei verwendet.

Tabellendefinition mithilfe eines Inline-Schemas erstellen

Wenn Sie die automatische Schemaerkennung nicht verwenden möchten, können Sie eine Tabellendefinitionsdatei mithilfe einer Inline-Schemadefinition erstellen. Zum Anlegen einer Inline-Schemadefinition müssen Sie die Felder und Datentypen in der Befehlszeile im folgenden Format angeben: field:data_type,field:data_type.

Sie können eine Inline-Schemadefinition für Tabellendefinitionen folgender Dateien verwenden:

  • JSON-Dateien, die in Cloud Storage oder Google Drive gespeichert sind
  • CSV-Dateien, die in Cloud Storage oder Google Drive gespeichert sind
  • Google Tabellen-Dateien, die in Google Drive gespeichert sind

So erstellen Sie mit dem bq-Befehlszeilentool eine Tabellendefinition für eine Cloud Storage-Datenquelle mithilfe einer Inline-Schemadefinition:

  1. Verwenden Sie den Befehl mkdef des bq-Tools mit dem Flag --noautodetect, um eine Tabellendefinition zu erstellen. Der Befehl mkdef erzeugt eine Tabellendefinitionsdatei im JSON-Format. Im folgenden Beispiel wird eine Tabellendefinition erstellt und die Ausgabe in die Datei /tmp/file_name geschrieben.

    Ersetzen Sie im Befehl Folgendes:

    • source_format durch das Dateiformat NEWLINE_DELIMITED_JSON, CSV oder GOOGLE_SHEETS.
    • uri durch den Cloud Storage-URI oder den Google Drive-URI, z. B. https://drive.google.com/open?id=123ABCD123AbcD123Abcd für Google Drive oder gs://mybucket/myfile für Cloud Storage.
    • field:data_type,field:data_type durch Ihre Schemadefinition, z. B. Name:STRING,Address:STRING, ....
    • file_name durch den Namen der Tabellendefinitionsdatei.
    bq mkdef \
    --noautodetect \
    --source_format=source_format \
    "uri" \
    field:data_type,field:data_type > /tmp/file_name
    
  2. Optional: Öffnen Sie die Tabellendefinitionsdatei in einem Texteditor. So kann die Datei z. B. mit dem Befehl nano /tmp/file_name in Nano geöffnet werden. Die Datei sollte in etwa wie im Folgenden dargestellt aussehen. Beachten Sie, dass "autodetect" nicht aktiviert ist und die Schemainformationen in die Tabellendefinitionsdatei geschrieben werden.

    {
    "schema": {
      "fields": [
        {
          "name": "field",
          "type": "data_type"
        },
        {
          "name": "field",
          "type": "data_type"
        }
        ...
      ]
    },
    "sourceFormat": "NEWLINE_DELIMITED_JSON",
    "sourceUris": [
      "uri"
    ]
    }
    
  3. Optional: Bearbeiten Sie die Tabellendefinitionsdatei manuell, wenn Sie allgemeine Einstellungen wie maxBadRecords oderignoreUnknownValues ändern, hinzufügen oder löschen möchten. Für JSON-Quelldateien sind keine speziellen Konfigurationseinstellungen vorhanden. Dagegen gibt es entsprechende Einstellungen für CSV-Dateien und Google Tabellen-Dateien. Weitere Informationen finden Sie in der API-Referenz unter ExternalDataConfiguration.

Tabellendefinition mithilfe einer JSON-Schemadatei erstellen

Wenn Sie weder die automatische Erkennung noch eine Inline-Schemadefinition verwenden möchten, können Sie eine JSON-Schemadatei erstellen und beim Erstellen der Tabellendefinition darauf verweisen. Sie müssen die JSON-Schemadatei manuell erstellen und sie muss sich auf Ihrem lokalen Computer befinden. Der Verweis auf eine JSON-Schemadatei in Cloud Storage oder Google Drive wird nicht unterstützt.

Sie können eine JSON-Schemadatei verwenden, wenn Sie Tabellendefinitionen für Folgendes erstellen:

  • JSON-Dateien, die in Cloud Storage oder Google Drive gespeichert sind
  • CSV-Dateien, die in Cloud Storage oder Google Drive gespeichert sind
  • Google Tabellen-Dateien, die in Google Drive gespeichert sind

cl

So erstellen Sie mit dem bq-Befehlszeilentool eine Tabellendefinition für eine Cloud Storage-Datenquelle mithilfe einer JSON-Schemadatei:

  1. Verwenden Sie den Befehl mkdef des bq-Tools mit dem Flag --noautodetect, um eine Tabellendefinition zu erstellen. Der Befehl mkdef erzeugt eine Tabellendefinitionsdatei im JSON-Format. Im folgenden Beispiel wird eine Tabellendefinition erstellt und die Ausgabe in die Datei /tmp/file_name geschrieben.

    Ersetzen Sie im Befehl Folgendes:

    • source_format durch das Dateiformat NEWLINE_DELIMITED_JSON, CSV oder GOOGLE_SHEETS.
    • file_name durch den Namen der Tabellendefinitionsdatei.
    • bucket_uri durch den Cloud Storage-URI, z. B. gs://mybucket/myfile.
    • path_to_schema_file durch den Speicherort der JSON-Schemadatei auf Ihrem lokalen Computer.
    bq mkdef \
    --noautodetect \
    --source_format=source_format \
    "bucket_uri" \
    path_to_schema_file > /tmp/file_name
    
  2. Optional: Öffnen Sie die Tabellendefinitionsdatei in einem Texteditor. Mit dem Befehl nano /tmp/file_name wird die Datei z. B. in
    Nano geöffnet. Die Datei sollte in etwa wie im Folgenden dargestellt aussehen. Beachten Sie, dass "autodetect" nicht aktiviert ist und die Schemainformationen in die Tabellendefinitionsdatei geschrieben werden.

    {
    "schema": {
      "fields": [
        {
          "name": "field",
          "type": "data_type"
        },
        {
          "name": "field",
          "type": "data_type"
        }
        ...
      ]
    },
    "sourceFormat": "NEWLINE_DELIMITED_JSON",
    "sourceUris": [
      "bucket_uri"
    ]
    }
    
  3. Optional: Bearbeiten Sie die Tabellendefinitionsdatei manuell, wenn Sie allgemeine Einstellungen wie maxBadRecords oderignoreUnknownValues ändern, hinzufügen oder löschen möchten. Für JSON-Quelldateien sind keine speziellen Konfigurationseinstellungen vorhanden. Dagegen gibt es entsprechende Einstellungen für CSV-Dateien und Google Tabellen-Dateien. Weitere Informationen finden Sie in der API-Referenz unter ExternalDataConfiguration.

Google Drive

So erstellen Sie mit dem bq-Befehlszeilentool eine Tabellendefinition für eine Google Drive-Datenquelle mithilfe einer JSON-Schemadatei:

  1. Verwenden Sie den Befehl mkdef des bq-Tools mit dem Flag --noautodetect, um eine Tabellendefinition zu erstellen. Der Befehl mkdef erzeugt eine Tabellendefinitionsdatei im JSON-Format. Im folgenden Beispiel wird eine Tabellendefinition erstellt und die Ausgabe in die Datei /tmp/file_name geschrieben.

    Ersetzen Sie im Befehl Folgendes:

    • source_format durch das Dateiformat NEWLINE_DELIMITED_JSON, CSV oder GOOGLE_SHEETS.
    • drive_uri durch den Google Drive-URI, z. B. https://drive.google.com/open?id=123ABCD123AbcD123Abcd.
    • path_to_schema_file durch den Speicherort der JSON-Schemadatei auf Ihrem lokalen Computer.
    • file_name durch den Namen der Tabellendefinitionsdatei.
    bq mkdef \
    --noautodetect \
    --source_format=source_format \
    "drive_uri" \
    path_to_schema_file > /tmp/file_name
    
  2. Öffnen Sie die Datei in einem Texteditor. Mit dem Befehl nano /tmp/file_name wird die Datei z. B. in Nano geöffnet. Die Datei sollte wie unten dargestellt aussehen. Beachten Sie, dass "autodetect" nicht aktiviert ist und die Schemainformationen in die Tabellendefinitionsdatei geschrieben werden.

    {
    "schema": {
      "fields": [
        {
          "name": "field",
          "type": "data_type"
        },
        {
          "name": "field",
          "type": "data_type"
        }
        ...
      ]
    },
    "sourceFormat": "GOOGLE_SHEETS",
    "sourceUris": [
      "drive_uri"
    ]
    }
    
  3. Optional: Bearbeiten Sie die Tabellendefinitionsdatei manuell, wenn Sie allgemeine Einstellungen wie maxBadRecords oderignoreUnknownValues ändern, hinzufügen oder löschen möchten. Für JSON-Quelldateien sind keine speziellen Konfigurationseinstellungen vorhanden. Dagegen gibt es entsprechende Einstellungen für CSV-Dateien und Google Tabellen-Dateien. Weitere Informationen finden Sie in der API-Referenz unter ExternalDataConfiguration.

  4. Wenn Sie ein bestimmtes Tabellenblatt oder einen Zellenbereich in einer Google Tabellen-Datei angeben möchten, fügen Sie der Tabellendefinitionsdatei das Attribut range hinzu. Zur Abfrage eines speziellen Tabellenblatts geben Sie den Tabellenblattnamen an. Für die Abfrage eines Zellenbereichs geben Sie den Bereich im Format sheet_name!top_left_cell_id:bottom_right_cell_id an, z. B. "Sheet1!A1:B20". Wenn Sie den Parameter range nicht festlegen, wird das erste Tabellenblatt der Datei verwendet.

Tabellendefinition für selbstbeschreibende Formate erstellen

Avro, Parquet und ORC sind selbstbeschreibende Formate. Datendateien in diesen Formaten enthalten eigene Schemainformationen. Wenn Sie eines dieser Formate als externe Datenquelle verwenden, ruft BigQuery das Schema automatisch über die Quelldaten ab. Sie müssen beim Erstellen einer Tabellendefinition keine automatische Schemaerkennung verwenden und auch keine Inline-Schemadefinition oder Schemadatei angeben.

Sie können eine Tabellendefinitionsdatei für Avro-, Parquet- oder ORC-Daten erstellen, die in Cloud Storage oder Google Drive gespeichert sind.

Führen Sie die folgenden Schritte aus, um mit dem bq-Befehlszeilentool eine Tabellendefinitionsdatei zu erstellen:

  1. Verwenden Sie den Befehl mkdef des bq-Tools, um eine Tabellendefinition zu erstellen.

    bq mkdef \
    --source_format=FORMAT \
    "URI" > FILE_NAME
    

    Wobei:

    • FORMAT ist AVRO, ORC oder PARQUET.

    • URI ist der Cloud Storage-URI oder Ihr Google Drive-URI. z. B. https://drive.google.com/open?id=123ABCD123AbcD123Abcd für Google Drive oder gs://mybucket/myfile für Cloud Storage

    • FILE_NAME ist der Name der Tabellendefinitionsdatei.

  2. (Optional) Öffnen Sie die Tabellendefinitionsdatei in einem Texteditor. Die Ausgabe sieht dann ungefähr so aus:

    {
    "sourceFormat": "AVRO",
    "sourceUris": [
      "URI"
    ]
    }
    
  3. Optional: Bearbeiten Sie die Tabellendefinitionsdatei manuell, wenn Sie allgemeine Einstellungen wie maxBadRecords oderignoreUnknownValues ändern, hinzufügen oder löschen möchten. Weitere Informationen finden Sie in der API-Referenz unter ExternalDataConfiguration.

Tabellendefinition für Hive-partitionierte Daten erstellen

Sie können in Hive gespeicherte Daten, die in Cloud Storage gespeichert sind, in den Formaten Avro, Parquet, ORC, JSON und CSV abfragen. Verwenden Sie den Befehl bq mkdef wie für das Datenformat in den vorherigen Abschnitten beschrieben und fügen Sie die folgenden Hive-Partitionierungs-Flag-Optionen hinzu:

  • --hive_partitioning_mode: Gibt an, wie das Partitionierungsschema bestimmt wird, wenn BigQuery Daten liest. Die folgenden Modi werden unterstützt:

    • AUTO: Name und Typen von Partitionierungsschlüsseln automatisch ableiten.
    • STRINGS: Partitionierungsschlüsselnamen automatisch ableiten. Alle Typen werden als Strings behandelt.
    • CUSTOM: Geben Sie das Partitionierungsschema im Präfix für den Quell-URI an.
  • --hive_partitioning_source_uri_prefix: Gibt das gemeinsame Präfix für die Quell-URIs an. Der gemeinsame Präfixwert ist der Teil des URI, der unmittelbar vor der Codierung des Partitionierungsschlüssels steht. Wenn Sie CUSTOM für den Modus angegeben haben, müssen Sie zusätzlich das Partitionierungsschema angeben.

    Sehen Sie sich beispielsweise Dateien mit der folgenden Struktur an:

    • gs://bucket/path_to_table/dt=2019-06-01/country=USA/id=7/file.avro
    • gs://bucket/path_to_table/dt=2019-05-31/country=CA/id=3/file.avro

    Wenn Sie die Modi AUTO oder STRINGS verwenden, können die folgenden Werte akzeptiert werden:

    • gs://bucket/path_to_table
    • gs://bucket/path_to_table/

    Wenn Sie den Modus CUSTOM verwenden, sind die folgenden Werte zulässig:

    • gs://bucket/path_to_table/{dt:DATE}/{country:STRING}/{id:INTEGER}
    • gs://bucket/path_to_table/{dt:STRING}/{country:STRING}/{id:INTEGER}
    • gs://bucket/path_to_table/{dt:DATE}/{country:STRING}/{id:STRING}

Beispiel: CSV-Dateien mit dem Modus AUTO

Wenn Sie Hive-partitionierte Daten in einem CSV-Format wie gs://myProject/myBucket/myDataSet/date=<date>/id=<id>/file.csv abfragen und das Partitionierungsschema automatisch ableiten möchten, sieht der Befehl in etwa so aus:

bq mkdef \
--autodetect \
--source_format=CSV \
--hive_partitioning_mode=AUTO
--hive_partitioning_source_uri_prefix=gs://myProject/myBucket/myDataSet/
"gs://myBucket/myDataSet/*.csv" > /tmp/MyTableDefFile

Beispiel: ORC-Dateien mit dem Modus CUSTOM

Wenn Sie Hive-partitionierte Daten in einem ORC-Format wie gs://myProject/myBucket/myDataSet/date=<date>/id=<id>/file.orc abfragen und das Partitionierungsschema angeben möchten, sieht der Befehl in etwa so aus:

bq mkdef \
--source_format=ORC \
--hive_partitioning_mode=CUSTOM
--hive_partitioning_source_uri_prefix=gs://myProject/myBucket/myDataSet/{date:DATE}/{id:INTEGER}
"gs://myBucket/myDataSet/*.orc" > /tmp/MyTableDefFile

Tabellendefinitionen für Datastore- und Firestore-Exporte erstellen

Wenn Sie einen Datastore- oder Firestore-Export als externe Datenquelle verwenden, ruft BigQuery das Schema automatisch aus den selbstbeschreibenden Quelldaten ab. Sie müssen also beim Erstellen einer Tabellendefinition für Datastore- und Firestore-Sicherungsdateien keine automatische Schemaerkennung festlegen und auch keine Inline-Schemadefinition bzw. Schemadatei angeben.

Sie können eine Tabellendefinitionsdatei für Datastore- und Firestore-Exportdaten erstellen, die in Cloud Storage gespeichert sind.

So erstellen Sie mit dem bq-Befehlszeilentool eine Tabellendefinitionsdatei für Datastore- oder Firestore-Exportdaten:

  1. Verwenden Sie den Befehl mkdef des bq-Tools, um eine Tabellendefinition zu erstellen. Das Flag --noautodetect muss für Datastore- oder Firestore-Sicherungsdateien nicht verwendet werden. Die automatische Schemaerkennung ist für diese Dateitypen deaktiviert. Der Befehl mkdef erzeugt eine Tabellendefinitionsdatei im JSON-Format. Im folgenden Beispiel wird eine Tabellendefinition erstellt und die Ausgabe in eine Datei geschrieben: /tmp/file_name.

    Ersetzen Sie im Befehl Folgendes:

    • bucket_uri durch den Cloud Storage-URI.
    • file_name durch den Namen der Tabellendefinitionsdatei.

    Das DATASTORE_BACKUP-Quellformat wird sowohl für Datastore als auch Firestore verwendet.

    bq mkdef \
    --source_format=DATASTORE_BACKUP \
    "uri" > /tmp/file_name
    
  2. Optional: Öffnen Sie die Tabellendefinitionsdatei in einem Texteditor. Mit dem Befehl nano /tmp/file_name wird die Datei z. B. in Nano geöffnet. Die Datei sollte in etwa wie im Folgenden dargestellt aussehen. Beachten Sie, dass die Einstellung "autodetect" nicht erforderlich ist.

    {
    "sourceFormat": "DATASTORE_BACKUP",
    "sourceUris": [
      "gs://bucket_uri"
    ]
    }
    
  3. Optional: Bearbeiten Sie die Tabellendefinitionsdatei manuell, um Einstellungen wie maxBadRecords oder ignoreUnknownValues zu ändern, hinzuzufügen oder zu löschen. Für Datastore- und Firestore-Exportdateien sind keine speziellen Konfigurationseinstellungen vorhanden. Es gibt jedoch entsprechende Einstellungen für CSV-Dateien und Google Tabellen-Dateien. Weitere Informationen finden Sie in der API-Referenz unter ExternalDataConfiguration.

Cloud Bigtable-Tabellendefinitionen erstellen

Eine Tabellendefinitionsdatei für Cloud Bigtable erstellen Sie manuell im JSON-Format. Der Befehl mkdef zum Erstellen einer Tabellendefinition wird derzeit für Cloud Bigtable-Datenquellen nicht unterstützt. Auch die automatische Schemaerkennung wird für Cloud Bigtable nicht unterstützt. Eine Liste der Optionen für Cloud Bigtable-Tabellendefinitionen finden Sie in der REST API-Referenz unter BigtableOptions.

Im Folgenden ist ein Beispiel für eine JSON-Tabellendefinitionsdatei für Cloud Bigtable dargestellt. Mit dieser Tabellendefinitionsdatei liest BigQuery Daten aus einer einzelnen Spaltenfamilie und interpretiert dabei die Werte als binär codierte Ganzzahlen.

{
    "sourceFormat": "BIGTABLE",
    "sourceUris": [
        "https://googleapis.com/bigtable/projects/project_id/instances/instance_id/tables/table_name"
    ],
    "bigtableOptions": {
        "columnFamilies" : [
            {
                "familyId": "family_int",
                "type": "INTEGER",
                "encoding": "BINARY"
            }
        ]
    }
}

Unterstützung von Platzhaltern für Tabellendefinitionsdateien

Wenn Ihre Cloud Storage-Daten in mehrere Dateien mit einem gemeinsamen Basisnamen aufgeteilt sind, können Sie im URI in der Tabellendefinitionsdatei einen Platzhalter verwenden. Dazu hängen Sie ein Sternchen (*) an den Basisnamen an und setzen den Bucket und den Dateinamen in Anführungszeichen. Beispiel: Bei zwei Dateien namens fed-sample000001.csv und fed-sample000002.csv lautet der Bucket-URI "gs://mybucket/fed-sample*".

Sie können nur einen Platzhalter für Objekte (Dateinamen) in Ihrem Bucket verwenden. Der Platzhalter muss dabei innerhalb oder am Ende des Objektnamens stehen. Das Anhängen eines Platzhalters an den Bucketnamen wird nicht unterstützt.

Für Cloud Bigtable-Daten kann nur ein URI angegeben werden. Dieser muss eine vollständige und gültige HTTPS-URL für eine Cloud Bigtable-Tabelle sein. Auch für Datastore-Sicherungen lässt sich nur ein URI festlegen. Dieser muss auf .backup_info enden.

Das Platzhalterzeichen * ist nicht zulässig, wenn Tabellendefinitionsdateien für folgende Datenquellen erstellt werden:

  • Cloud Bigtable-Datenquellen
  • In Cloud Storage gespeicherte Datastore-Exporte
  • Firestore-Exporte, die in Cloud Storage gespeichert sind
  • In Google Drive gespeicherte Daten