JDBC-Treiber für BigQuery verwenden

Der JDBC-Treiber (Java Database Connectivity) für BigQuery verbindet Ihre Java-Anwendung mit BigQuery. So können Sie BigQuery-Funktionen mit Ihren bevorzugten Tools und Ihrer bevorzugten Infrastruktur nutzen. Dieser Treiber wurde speziell für BigQuery entwickelt und kann nicht mit anderen Produkten oder Diensten verwendet werden. Für die Verwendung dieses Treibers sind keine zusätzlichen Lizenzen erforderlich.

Hinweise

  1. Machen Sie sich mit JDBC-Treibern und dem java.sql-Paket vertraut.
  2. Prüfen Sie, ob auf Ihrem System die Java-Laufzeitumgebung (JRE) 8.0 oder höher konfiguriert ist.

Treiber konfigurieren

Wenn Sie den JDBC-Treiber für BigQuery konfigurieren möchten, müssen Sie den Treiber installieren, sich bei BigQuery authentifizieren und eine Verbindung herstellen.

Treiber installieren

  1. Laden Sie eines der folgenden JDBC-Pakete herunter:
  2. Fügen Sie die heruntergeladene JAR-Datei Ihrem Klassenpfad hinzu, damit der Java-Compiler und die Laufzeitumgebung die erforderlichen JDBC-Klassen finden können.

Bei BigQuery authentifizieren

Der JDBC-Treiber für BigQuery bietet mehrere Authentifizierungsoptionen:

  • Dienstkonto verwenden
  • Google-Nutzerkonto verwenden
  • Vorab generierte Zugriffs- und Aktualisierungstokens verwenden
  • Standardanmeldedaten für Anwendungen verwenden
  • Externe Methode verwenden

Mit einem Dienstkonto authentifizieren

Wenn Sie eine Verbindung mit dem JDBC-Treiber für BigQuery herstellen, gehen Sie so vor:

  1. Legen Sie die OAuthType-Verbindungseigenschaft auf 0 fest.
  2. Legen Sie die Verbindungseigenschaft ProjectId auf den Namen Ihres BigQuery-Projekts fest.
  3. Führen Sie einen der folgenden Schritte aus:
    • Wenn Sie eine E-Mail-Adresse und einen Schlüssel für ein Dienstkonto verwenden, legen Sie die Verbindungseigenschaft OAuthServiceAcctEmail auf die E-Mail-Adresse Ihres Google-Dienstkontos und die Verbindungseigenschaft OAuthPvtKey auf das JSON-Objekt des Dienstkontoschlüssels fest. Für OAuthPvtKey können Sie entweder das JSON-Objekt des Schlüssels oder den vollständigen Pfad der Schlüsseldatei verwenden.
    • Wenn Sie eine Schlüsseldatei für das Dienstkonto verwenden, legen Sie das Verbindungsparameter OAuthPvtKeyPath auf den vollständigen Pfad zur Schlüsseldatei des Dienstkontos fest.

In den folgenden zwei Beispielen wird die Dienstkonto-Authentifizierung verwendet:

jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=0;
OAuthServiceAcctEmail=bq-jdbc-sa@mytestproject.iam.gserviceaccount.com;
OAuthPvtKey=my-sa-key
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=0;
OAuthPvtKeyPath=path/to/file/secret.json;

Mit einem Google-Nutzerkonto authentifizieren

Wenn Sie eine Verbindung mit dem JDBC-Treiber für BigQuery herstellen, gehen Sie so vor:

  1. Legen Sie die OAuthType-Verbindungseigenschaft auf 1 fest.
  2. Legen Sie die Verbindungseigenschaft ProjectId auf den Namen Ihres BigQuery-Projekts fest.
  3. Legen Sie das Attribut OAuthClientId auf Ihre Client-ID und das Attribut OAuthClientSecret auf Ihren Clientschlüssel fest.

Weitere Informationen finden Sie unter Mit OAuth 2.0 auf Google APIs zugreifen und OAuth-Clients verwalten.

Im folgenden Beispiel wird die Authentifizierung von Google-Nutzerkonten verwendet:

jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=1;
OAuthClientId=123456789012-abcdefghijklmnopqrstuvwxyz12345.apps.googleusercontent.com;
OAuthClientSecret=_aB-C1D_E2fGh3Ij4kL5m6No7p8QR9sT0uV;

Mit einem vorab generierten Zugriffs- oder Aktualisierungstoken authentifizieren

Wenn Sie eine Verbindung mit dem JDBC-Treiber für BigQuery herstellen, gehen Sie so vor:

  1. Legen Sie die OAuthType-Verbindungseigenschaft auf 2 fest.
  2. Legen Sie die Verbindungseigenschaft ProjectId auf den Namen Ihres BigQuery-Projekts fest.
  3. Führen Sie einen der folgenden Schritte aus:
    • Wenn Sie ein vorab generiertes Zugriffstoken verwenden, legen Sie die Verbindungseigenschaft OAuthAccessToken auf Ihr Zugriffstoken fest.
    • Wenn Sie ein vorab generiertes Aktualisierungstoken verwenden, legen Sie die Verbindungseigenschaft OAuthRefreshToken auf Ihr Aktualisierungstoken, die Verbindungseigenschaft OAuthClientId auf Ihre Client-ID und die Verbindungseigenschaft OAuthClientSecret auf Ihr Client-Secret fest.

Weitere Informationen finden Sie unter Mit OAuth 2.0 auf Google APIs zugreifen.

Im folgenden Beispiel wird die Authentifizierung mit einem vorab generierten Zugriffstoken verwendet:

jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=2;
OAuthAccessToken=ya29.a0AfH6SMCiH1L-x_yZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_;

Im folgenden Beispiel wird die Authentifizierung mit einem vorab generierten Aktualisierungstoken verwendet:

jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=2;
OAuthClientId=123456789012-abcdefghijklmnopqrstuvwxyz12345.apps.googleusercontent.com;
OAuthClientSecret=_aB-C1D_E2fGh3Ij4kL5m6No7p8QR9sT0uV;
OAuthRefreshToken=1/fFAGRNJru1FTz70BzhT3Zg;

Mit Standardanmeldedaten für Anwendungen authentifizieren

Der Einsatz von Standardanmeldedaten für Anwendungen ist eine Strategie, die von den Authentifizierungsbibliotheken verwendet wird, um Anmeldedaten automatisch basierend auf der Anwendungsumgebung zu finden.

Wenn Sie eine Verbindung mit dem JDBC-Treiber für BigQuery herstellen, gehen Sie so vor:

  1. Legen Sie die OAuthType-Verbindungseigenschaft auf 3 fest.
  2. Legen Sie die Verbindungseigenschaft ProjectId auf den Namen Ihres BigQuery-Projekts fest.

Weitere Informationen finden Sie unter Standardanmeldedaten für Anwendungen einrichten.

Im folgenden Beispiel wird die ADC-Authentifizierung verwendet:

jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=3;

Mit einer externen Methode authentifizieren

Sie können sich mit externen Methoden wie der Workforce Identity-Föderation oder der Workload Identity-Föderation authentifizieren.

Wenn Sie eine Verbindung mit dem JDBC-Treiber für BigQuery herstellen, gehen Sie so vor:

  1. Legen Sie die OAuthType-Verbindungseigenschaft auf 4 fest.
  2. Legen Sie die Verbindungseigenschaft ProjectId auf den Namen Ihres BigQuery-Projekts fest.
  3. Führen Sie einen der folgenden Schritte aus:
    • Legen Sie das Verbindungsattribut OAuthPvtKey oder das Verbindungsattribut OAuthPvtKeyPath auf den vollständigen Pfad der Konfigurationsdatei fest. Für OAuthPvtKey können Sie entweder das JSON-Objekt des Schlüssels oder den vollständigen Pfad der Schlüsseldatei verwenden.
    • Legen Sie das Verbindungsattribut OAuthPvtKey auf das rohe Konfigurationsobjekt des externen Kontos fest.
    • Legen Sie die folgenden BYOID-Verbindungseigenschaften fest, die im Abschnitt Verbindungseigenschaften beschrieben werden:
      • BYOID_AudienceUri
      • BYOID_CredentialSource
      • BYOID_PoolUserProject
      • BYOID_SA_Impersonation_Uri
      • BYOID_SubjectTokenType
      • BYOID_TokenUri

In den folgenden Beispielen werden externe Authentifizierungsmethoden verwendet:

jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=4;
OAuthPvtKeyPath=path/to/file/secret.json;
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=4;
OAuthPvtKey=External_account_configuration_object;
jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
ProjectId=MyTestProject;OAuthType=4;
BYOID_AudienceUri=//iam.googleapis.com/projects/my-project/locations/US-EAST1/workloadIdentityPools/my-pool-/providers/my-provider;
BYOID_SubjectTokenType=urn:ietf:params:oauth:tokentype:id_token;
BYOID_CredentialSource={\"file\":\"/path/to/file\"};
BYOID_SA_Impersonation_Uri=my-sa;
BYOID_TokenUri=https://sts.googleapis.com/v1/token;"

Hier sehen Sie ein Beispiel für eine Konfigurationsdatei:

{
  "type": "external_account",
  "audience": "//iam.googleapis.com/locations/global/workforcePools/my_pool_name/providers/my_provider_name",
  "subject_token_type": "urn:ietf:params:oauth:token-type:id_token",
  "token_url": "https://sts.googleapis.com/v1/token",
  "credential_source": {
    "file": "/path/to/workforce/tokrn.txt"
  },
  "workforce_pool_user_project": "my_project",
  "token_info_url": "https://sts.googleapis.com/v1/introspect"
}

Verbindung herstellen

So stellen Sie eine Verbindung mit dem JDBC-Treiber für BigQuery her:

  1. Fügen Sie die google-cloud-bigquery-jdbc-Abhängigkeit in Ihre Maven-POM-Datei oder Gradle-Build-Datei ein:

    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-bigquery-jdbc</artifactId>
        <version>0.0.1</version>
        <scope>system</scope>
        <systemPath>path/to/file/google-jdbc-jar-with-dependencies.jar</systemPath>
    </dependency>
  2. Wenn Sie ein Gradle-Projekt verwenden, fügen Sie der Build-Datei Folgendes hinzu:

    dependencies {
    // ... other dependencies
    implementation files('path/to/file/google-jdbc-jar-with-dependencies.jar')
    }
  3. Ermitteln Sie den Verbindungs-String für den JDBC-Treiber. Dieser String enthält alle wichtigen Informationen, die zum Herstellen einer Verbindung zwischen Ihrer Java-Anwendung und einer bestimmten Datenbank erforderlich sind. Der JDBC-Treiber für den BigQuery-Verbindungsstring hat das folgende Format:

    jdbc:bigquery://HOST:PORT;ProjectId=PROJECT_ID;OAuthType=AUTH_TYPE;PROPERTIES

    Ersetzen Sie Folgendes:

    • HOST: Der DNS-Name oder die IP-Adresse des Servers.
    • PORT: die TCP-Portnummer.
    • PROJECT_ID: die ID Ihres BigQuery-Projekts.
    • AUTH_TYPE: Eine Zahl, die den von Ihnen verwendeten Authentifizierungstyp angibt. Einer der folgenden:
      • 0: Authentifizierung mit Google-Dienstkonto
      • 1: Authentifizierung von Google-Nutzerkonten
      • 2: Vorab generiertes Aktualisierungstoken oder Authentifizierung mit Zugriffstoken
      • 3: Authentifizierung mit Standardanmeldedaten für Anwendungen
      • 4: Externe Authentifizierungsmethoden wie Workforce Identity-Föderation oder Workload Identity-Föderation
    • PROPERTIES: Zusätzliche Verbindungseigenschaften für den JDBC-Treiber. Eigenschaften müssen im Format property_1=value_1; property_2=value_2;... aufgeführt werden. Bei Attributnamen wird nicht zwischen Groß- und Kleinschreibung unterschieden. Eine vollständige Liste der Verbindungseigenschaften finden Sie unter Verbindungseigenschaften.
  4. Stellen Sie mit der Klasse DriverManager oder DataSource eine Verbindung zum Treiber her.

    • Stellen Sie eine Verbindung zur Klasse DriverManager her:

      import java.sql.Connection;
      import java.sql.DriverManager;
      
      private static Connection getJdbcConnectionDM(){
        Connection connection = DriverManager.getConnection(CONNECTION_STRING);
        return connection;
      }

      Ersetzen Sie CONNECTION_STRING durch den Verbindungsstring aus dem vorherigen Schritt.

    • Stellen Sie eine Verbindung zur Klasse DataSource her:

      import com.google.cloud.bigquery.jdbc.DataSource;
      import java.sql.Connection;
      import java.sql.SQLException;
      
      private static public Connection getJdbcConnectionDS() throws SQLException {
        Connection connection = null;
        DataSource dataSource = new com.google.cloud.bigquery.jdbc.DataSource();
        dataSource.setURL(CONNECTION_STRING);
        connection = dataSource.getConnection();
        return connection;
      }

      Ersetzen Sie CONNECTION_STRING durch den Verbindungsstring aus dem vorherigen Schritt.

      Die Klasse DataSource hat auch Setter-Methoden, mit denen Sie Verbindungseigenschaften festlegen können, anstatt jede Eigenschaft in den Verbindungsstring aufzunehmen. Hier ein Beispiel:

      private static Connection getConnection() throws SQLException {
        DataSource ds = new DataSource();
        ds.setURL(CONNECTION_STRING);
        ds.setAuthType(3);  // Application Default Credentials
        ds.setProjectId("MyTestProject");
        ds.setEnableHighThroughputAPI(true);
        ds.setLogLevel("6");
        ds.setUseQueryCache(false);
        return ds.getConnection();
      }

Fahrerfunktionen kennenlernen

Nachdem Sie eine Verbindung zum JDBC-Treiber für BigQuery hergestellt haben, können Sie die Funktionen nutzen.

SQL-Connector

Mit dem SQL-Connector können Sie SQL-Abfragen mit BigQuery ausführen. Verwenden Sie die Verbindungseigenschaft QueryDialect, um den SQL-Dialekt anzugeben, den Sie verwenden möchten.

Datentypzuordnung

Der JDBC-Treiber für BigQuery unterstützt die folgenden Datentypzuordnungen:

BigQuery-Typ SQL-Typ Java-Typ
ARRAY ARRAY Array
BIGNUMERIC NUMERIC BigDecimal
BOOL BOOLEAN Boolean
BYTES VARBINARY byte[]
DATE DATE Date
DATETIME OTHER String
FLOAT64 DOUBLE Double
GEOGRAPHY OTHER String
INT64 BIGINT Long
INTERVAL OTHER String
JSON OTHER String
NUMERIC NUMERIC BigDecimal
STRING NVARCHAR String
STRUCT STRUCT Struct
TIME TIME Time
TIMESTAMP TIMESTAMP Timestamp

Verschachtelte und wiederkehrende Datensätze

Der JDBC-Treiber für BigQuery unterstützt verschachtelte und wiederholte Datensätze. Dabei gibt der Treiber den Basistyp als Struktur- oder Stringobjekt zurück, das ein JSON-Objekt darstellt.

Im Folgenden sehen Sie ein Beispiel für das Abfragen des Basisdatensatzes von Strukturdaten:

ResultSet resultSet = statement.executeQuery("SELECT STRUCT(\"Adam\" as name, 5 as age)");
    resultSet.next();
    Struct obj = (Struct) resultSet.getObject(1);
    System.out.println(obj.toString());

Das Ergebnis lautet:

{
  "v": {
    "f": [
      {
        "v": "Adam"
      },
      {
        "v": "5"
      }
    ]
  }
}

Das folgende Beispiel zeigt, wie Sie Unterkomponenten eines Struktur-Objekts abfragen:

ResultSet resultSet = statement.executeQuery("SELECT STRUCT(\"Adam\" as name, 5 as age)");
    resultSet.next();
    Struct structObject = (Struct) resultSet.getObject(1);
    Object[] structComponents = structObject.getAttributes();
    for (Object component : structComponents){
      System.out.println(component.toString());
    }

Im Folgenden finden Sie ein Beispiel für das Abfragen eines Standardarrays mit wiederholten Daten:

// Execute Query
ResultSet resultSet = statement.executeQuery("SELECT [1,2,3]");
resultSet.next();
Object[] arrayObject = (Object[]) resultSet.getArray(1).getArray();

// Verify Result
int count =0;
for (; count < arrayObject.length; count++) {
  System.out.println(arrayObject[count]);
}

Im Folgenden sehen Sie ein Beispiel für das Abfragen eines Struct-Arrays mit wiederholten Daten:

// Execute Query
ResultSet resultSet = statement.executeQuery("SELECT "
    + "[STRUCT(\"Adam\" as name, 12 as age), "
    + "STRUCT(\"Lily\" as name, 17 as age)]");

Struct[] arrayObject = (Struct[]) resultSet.getArray(1).getArray();

// Verify Result
for (int count =0; count < arrayObject.length; count++) {
  System.out.println(arrayObject[count]);
}

Große Ergebnismenge

So rufen Sie große Ergebnismengen ab, wenn Sie den JDBC-Treiber für BigQuery verwenden:

  • Wenn die Verbindungseigenschaft QueryDialect auf SQL festgelegt ist, geben Sie mit den Verbindungseigenschaften LargeResultDataset und LargeResultTable ein Dataset und eine Tabelle an, in denen die Ergebnisse gespeichert werden sollen.
  • Wenn die QueryDialect-Verbindungseigenschaft auf BIG_QUERY festgelegt ist, setzen Sie die AllowLargeResults-Verbindungseigenschaft auf TRUE und geben Sie mit den Verbindungseigenschaften LargeResultDataset und LargeResultTable ein Dataset und eine Tabelle an, in denen die Ergebnisse gespeichert werden sollen.

In beiden Fällen können Sie mit der Verbindungseigenschaft LargeResultsDatasetExpirationTime die Lebensdauer des Zieldatasets angeben.

Wenn Sie keine Werte für die Verbindungseigenschaften LargeResultDataset und LargeResultTable angeben, erstellt der JDBC-Treiber für BigQuery ein ausgeblendetes Dataset mit dem Namen _google_jdbc und eine temporäre Tabelle darin. Diese Ressourcen werden nach 24 Stunden automatisch gelöscht.

Es gelten weiterhin alle BigQuery-Kontingente und -Limits.

Positionsparameter

Positionsparameter sind Platzhalter in einer SQL-Anweisung, die Werte darstellen, die während der Ausführung der Abfrage angegeben werden müssen. Der JDBC-Treiber für BigQuery unterstützt Positionsparameter mit dem Fragezeichen (?). Im Folgenden sehen Sie ein Beispiel für eine Abfrage, in der ein Positionsparameter verwendet wird:

PreparedStatement preparedStatement = connection.prepareStatement(
    "SELECT * FROM MyTestTable where testColumn = ?");
preparedStatement.setString(1, "string2");
ResultSet resultSet = statement.executeQuery(selectQuery);

SELECT Abfragen

Mit dem JDBC-Treiber für BigQuery können Sie SELECT-Abfragen über die BigQuery API oder die BigQuery Storage Read API ausführen.

Wenn Sie die BigQuery API verwenden, legen Sie die Verbindungseigenschaft JobCreationMode fest, um anzugeben, ob die Abfrage mit oder ohne Erstellung eines Jobs ausgeführt wird.

Wenn Sie die Storage Read API verwenden, aktivieren Sie die API mit der Verbindungseigenschaft EnableHighThroughputAPI und prüfen Sie, ob die folgenden Bedingungen erfüllt sind:

  • Im Schema wird der Typ INTERVAL nicht verwendet.
  • Die Gesamtzahl der Zeilen ist kleiner als der Wert der Verbindungseigenschaft HighThroughputMinTableSize.
  • Das Verhältnis von Zeilen zu Seitengröße ist kleiner als der Wert der Verbindungseigenschaft HighThroughputActivationRatio.

Bulk-Insert

Wenn Sie Bulk-Insert-Vorgänge mit dem JDBC-Treiber für BigQuery ausführen möchten, verwenden Sie die Methode executeBatch.

Hier ein Beispiel für einen Schreibvorgang:

Connection conn = DriverManager.getConnection(connectionUrl);
PreparedStatement statement = null;
Statement st = conn.createStatement();
final String insertQuery = String.format(
        "INSERT INTO `%s.%s.%s` "
      + " (StringField, IntegerField, BooleanField) VALUES(?, ?, ?);",
        DEFAULT_CATALOG, DATASET, TABLE_NAME);

statement = conn.prepareStatement(insertQuery1);

for (int i=0; i<2000; ++i) {
      statement.setString(1, i+"StringField");
      statement.setInt(2, i);
      statement.setBoolean(3, true);
      statement.addBatch();
}

statement.executeBatch();

Logging

Der JDBC-Treiber für BigQuery unterstützt die Protokollierung von Aktionen im Treiber über Java Util Logging. Das Logging kann sich auf die Leistung auswirken. Aktivieren Sie es daher nur, um ein Problem zu erfassen, und deaktivieren Sie es wieder, wenn Sie fertig sind.

So konfigurieren Sie das Logging:

  1. Legen Sie das Attribut LogLevel gemäß der folgenden Tabelle fest:

    LogLevel-Wert LogLevel Beschreibung
    0 OFF Es werden keine Nachrichten protokolliert.
    1 SEVERE Schwerwiegende Fehler, die sich auf die Anwendungsfunktionen auswirken.
    2 WARNING Mögliche Probleme oder Situationen, die Aufmerksamkeit erfordern.
    3 INFO Informationsmeldungen zu normalen Ereignissen und zum Fortschritt.
    4 CONFIG Meldungen zu statischen Konfigurationsinformationen.
    5 FINE Allgemeine Tracing-Meldungen.
    6 FINER Detaillierte Tracing-Meldungen.
    7 FINEST Sehr detaillierte Tracing-Meldungen, die für umfangreiches Debugging nützlich sind.
    8 ALL Alle Nachrichten werden protokolliert.
  2. Legen Sie die Eigenschaft LogPath auf den vollständigen Pfad des Ordners fest, in dem Sie die Logdatei speichern möchten.

Alternativ können Sie die Protokollierung mit den Umgebungsvariablen BIGQUERY_JDBC_LOG_LEVEL und BIGQUERY_JDBC_LOG_PATH konfigurieren.

Verbindungsattribute

In einem JDBC-Treiber sind Verbindungseigenschaften Konfigurationsparameter, die Sie in den Verbindungsstring aufnehmen oder über die Setter-Methoden übergeben können, wenn Sie eine Verbindung zu einer Datenbank herstellen. Die folgenden Verbindungseigenschaften werden vom JDBC-Treiber für BigQuery unterstützt.

AdditionalProjects

Mit dieser Verbindungseigenschaft können über Abfragen und Metadatenvorgänge auf Datasets in angegebenen Projekten zugegriffen werden. Das gilt zusätzlich zum primären Projekt, das im Verbindungsstring definiert ist.

  • Standardwert: N/A
  • Datentyp: String (kommagetrennter String mit Projekt-IDs)
  • Erforderlich: Nein

AllowLargeResults

Mit dieser Verbindungseigenschaft wird angegeben, ob der Treiber Abfrageergebnisse verarbeitet, die größer als 128 MB sind, wenn die Verbindungseigenschaft QueryDialect auf BIG_QUERY gesetzt ist. Wenn die Verbindungseigenschaft QueryDialect auf SQL festgelegt ist, wird die Verbindungseigenschaft AllowLargeResults standardmäßig auf TRUE festgelegt. Weitere Informationen finden Sie unter Große Ergebnismenge.

  • Standardwert: TRUE
  • Datentyp: Boolesch
  • Erforderlich: Nein

BYOID_AudienceUri

Mit diesem Verbindungsparameter wird das Zielgruppenattribut in einer Konfigurationsdatei für ein externes Konto angegeben. Die Eigenschaft „audience“ enthält den Ressourcennamen für den Workload Identity-Pool oder den Personalpool und die Anbieter-ID in diesem Pool.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nur wenn OAuthType=4

BYOID_CredentialSource

Mit dieser Verbindungseigenschaft werden Informationen zum Abrufen von Tokens und Umgebungsinformationen festgelegt.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nur wenn OAuthType=4

BYOID_PoolUserProject

Mit dieser Verbindungseigenschaft wird das Nutzerprojekt festgelegt, wenn der Personalpool verwendet wird. Das Projekt muss die IAM-Berechtigung serviceusage.services.use haben.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nur bei OAuthType=4 und Verwendung des Mitarbeiterpools

BYOID_SA_Impersonation_Uri

Mit dieser Verbindungseigenschaft wird die URL für die Identitätsübernahme des Dienstkontos festgelegt, wenn Arbeitslastidentitätspools verwendet werden und APIs nicht in UberMint integriert wurden.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nur bei OAuthType=4 und Verwendung des Workload Identity-Pools mit Identitätsübernahme des Dienstkontos

BYOID_SubjectTokenType

Mit diesem Verbindungsattribut wird das STS-Token basierend auf der Token-Austauschspezifikation festgelegt. Der Wert muss einer der folgenden sein:

  • Urn:ietf:params:oauth:token-type:jwt
  • Urn:ietf:params:oauth:token-type:id_token
  • Urn:ietf:params:oauth:token-type:saml2
  • urn:ietf:params:aws:token-type:aws4_request

  • Standardwert: urn:ietf:params:oauth:tokentype:id_token
  • Datentyp: String
  • Erforderlich: Nur wenn OAuthType=4

BYOID_TokenUri

Mit dieser Verbindungseigenschaft wird der STS-Token-Austauschendpunkt festgelegt.

  • Standardwert: https://sts.googleapis.com/v1/token
  • Datentyp: String
  • Erforderlich: Nein

ConnectionPoolSize

Mit dieser Verbindungseigenschaft wird die Größe des Verbindungspools festgelegt, wenn das Verbindungs-Pooling aktiviert ist.

  • Standardwert: 10
  • Datentyp: Long
  • Erforderlich: Nein

DefaultDataset

Mit dieser Verbindungseigenschaft wird das Dataset angegeben, das verwendet wird, wenn Sie eine Abfrage ausführen, ohne ein Dataset explizit anzugeben. Sie können entweder das Format DATASET_ID oder PROJECT_ID.DATASET_ID verwenden.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nein

EnableHighThroughputAPI

Mit dieser Verbindungseigenschaft wird festgelegt, ob die Storage Read API verwendet werden kann. Die Verbindungseigenschaften HighThroughputActivationRatio und HighThroughputMinTableSize müssen ebenfalls erfüllt sein, damit die Storage Read API verwendet werden kann.

  • Standardwert: FALSE
  • Datentyp: Boolesch
  • Erforderlich: Nein

EnableSession

Mit dieser Verbindungseigenschaft wird festgelegt, ob mit der Verbindung eine Sitzung gestartet wird. Wenn sie verwendet wird, wird die Sitzungs-ID an alle nachfolgenden Anfragen übergeben.

  • Standardwert: FALSE
  • Datentyp: Boolesch
  • Erforderlich: Nein

EnableWriteAPI

Diese Verbindungseigenschaft bestimmt, ob die Storage Write API verwendet werden kann. Er muss auf TRUE gesetzt sein, um das Einfügen mehrerer Datensätze zu ermöglichen.

  • Standardwert: FALSE
  • Datentyp: Boolesch
  • Erforderlich: Nein

EndpointOverrides

Mit diesem Verbindungsparameter werden benutzerdefinierte Endpunkte in einem durch Kommas getrennten String festgelegt.

  • Standardwerte:
    • BIGQUERY=https://bigquery.googleapis.com
    • READ_API=https://bigquerystorage.googleapis.com
    • OAUTH2=https://oauth2.googleapis.com
    • STS=https://sts.googleapis.com
  • Datentyp: String
  • Erforderlich: Nein

FilterTablesOnDefaultDataset

Mit dieser Verbindungseigenschaft wird der Umfang der Metadaten gesteuert, die von den Methoden DatabaseMetaData.getTables() und DatabaseMetaData.getColumns() zurückgegeben werden. Wenn die Property deaktiviert ist, findet keine Filterung statt. Die Verbindungseigenschaft DefaultDataset muss ebenfalls festgelegt werden, damit die Filterung möglich ist.

  • Standardwert: FALSE
  • Datentyp: Boolesch
  • Erforderlich: Nein

HighThroughputActivationRatio

Mit dieser Verbindungseigenschaft wird ein Grenzwert für die Anzahl der Seiten in einer Antwort auf eine Anfrage festgelegt. Wenn diese Zahl überschritten wird und die Bedingungen EnableHighThroughputAPI und HighThroughputMinTableSize erfüllt sind, verwendet der Treiber die Storage Read API.

  • Standardwert: 2
  • Datentyp: Ganzzahl
  • Erforderlich: Nein

HighThroughputMinTableSize

Mit dieser Verbindungseigenschaft wird ein Grenzwert für die Anzahl der Zeilen in einer Antwort auf eine Abfrage festgelegt. Wenn diese Zahl überschritten wird und die Bedingungen EnableHighThroughputAPI und HighThroughputActivationRatio erfüllt sind, verwendet der Treiber die Storage Read API.

  • Standardwert: 100
  • Datentyp: Ganzzahl
  • Erforderlich: Nein

JobCreationMode

Mit dieser Verbindungseigenschaft wird festgelegt, ob Abfragen ohne Erstellung von Jobs ausgeführt werden. Ein Wert von 1 bedeutet, dass für jede Abfrage Jobs erstellt werden, und ein Wert von 2 bedeutet, dass Abfragen ohne Jobs ausgeführt werden können.

  • Standardwert: 2
  • Datentyp: Ganzzahl
  • Erforderlich: Nein

JobTimeout

Mit dieser Verbindungseigenschaft wird das Zeitlimit für den Job (in Sekunden) festgelegt, nach dem der Job auf dem Server abgebrochen wird.

  • Standardwert: 0
  • Datentyp: Long
  • Erforderlich: Nein

KMSKeyName

Mit dieser Verbindungseigenschaft wird der KMS-Schlüsselname für die Verschlüsselung von Daten festgelegt.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nein

Labels

Mit dieser Verbindungseigenschaft werden Labels festgelegt, die mit der Abfrage verknüpft sind, um Abfragejobs zu organisieren und zu gruppieren.

  • Standardwert: N/A
  • Datentyp: Map<String, String>
  • Erforderlich: Nein

LargeResultDataset

Mit dieser Verbindungseigenschaft wird das Ziel-Dataset für Abfrageergebnisse festgelegt. Weitere Informationen finden Sie unter Große Ergebnismenge.

  • Standardwert: _google_jdbc, nur wenn QueryDialect=BIG_QUERY oder wenn QueryDialect=SQL und die Verbindungseigenschaft LargeResultTable festgelegt ist
  • Datentyp: String
  • Erforderlich: Nein

LargeResultsDatasetExpirationTime

Mit dieser Verbindungseigenschaft wird die Lebensdauer aller Tabellen in einem Dataset in Millisekunden angegeben. Diese Property wird ignoriert, wenn für das Dataset bereits eine Standardablaufzeit festgelegt ist.

  • Standardwert: 3600000
  • Datentyp: Long
  • Erforderlich: Nein

LargeResultTable

Mit dieser Verbindungseigenschaft wird die Zieltabelle für Abfrageergebnisse festgelegt. Weitere Informationen finden Sie unter Große Ergebnismenge.

  • Standardwert: temp_table..., nur wenn QueryDialect=BIG_QUERY oder wenn QueryDialect=SQL und die Verbindungseigenschaft LargeResultTable festgelegt ist
  • Datentyp: String
  • Erforderlich: Nein

ListenerPoolSize

Mit dieser Verbindungseigenschaft wird die Größe des Listener-Pools festgelegt, wenn das Verbindungs-Pooling aktiviert ist.

  • Standardwert: 10
  • Datentyp: Long
  • Erforderlich: Nein

Location

Mit dieser Verbindungseigenschaft wird der Speicherort angegeben, an dem Datasets erstellt oder abgefragt werden. BigQuery ermittelt den Standort automatisch, wenn dieser Wert nicht festgelegt ist.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nein

LogLevel

Diese Verbindungseigenschaft steuert den Detaillierungsgrad, der bei Datenbankinteraktionen protokolliert wird. Beschreibungen der einzelnen Ebenen finden Sie unter Logging.

  • Standardwert: 0
  • Datentyp: Ganzzahl
  • Erforderlich: Nein

LogPath

Mit dieser Verbindungseigenschaft wird das Verzeichnis festgelegt, in das Logdateien geschrieben werden. Weitere Informationen finden Sie unter Logging.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nein

MaximumBytesBilled

Mit dieser Verbindungseigenschaft wird die Anzahl der abgerechneten Byte begrenzt. Bei Abfragen, bei denen die abgerechneten Bytes dieses Limit überschreiten, schlägt die Abfrage fehl, ohne dass eine Gebühr anfällt.

  • Standardwert: 0
  • Datentyp: Long
  • Erforderlich: Nein

MaxResults

Mit dieser Verbindungseigenschaft wird die maximale Anzahl von Ergebnissen pro Seite festgelegt.

  • Standardwert: 10000
  • Datentyp: Long
  • Erforderlich: Nein

MetaDataFetchThreadCount

Mit dieser Verbindungseigenschaft wird die Anzahl der Threads konfiguriert, die für Datenbankmetadatenmethoden verwendet werden.

  • Standardwert: 32
  • Datentyp: Ganzzahl
  • Erforderlich: Nein

OAuthAccessToken

Mit dieser Verbindungseigenschaft wird das Zugriffstoken angegeben, das für die Authentifizierung mit einem vorab generierten Zugriffstoken verwendet wird.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Wenn AUTH_TYPE=2

OAuthClientId

Mit dieser Verbindungseigenschaft wird die Client-ID für die Authentifizierung mit vorab generierten Aktualisierungstokens und die Authentifizierung von Nutzerkonten festgelegt.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Wenn AUTH_TYPE=1 oder AUTH_TYPE=2

OAuthClientSecret

Mit dieser Verbindungseigenschaft wird das Clientgeheimnis für die Authentifizierung mit vorab generierten Aktualisierungstokens und die Authentifizierung von Nutzerkonten festgelegt.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Wenn AUTH_TYPE=1 oder AUTH_TYPE=2

OAuthP12Password

Mit diesem Verbindungsattribut wird das Passwort für die PKCS12-Schlüsseldatei festgelegt.

  • Standardwert: notasecret
  • Datentyp: String
  • Erforderlich: Nein

OAuthPvtKey

Mit dieser Verbindungseigenschaft wird der Dienstkontoschlüssel festgelegt, wenn die Dienstkontoauthentifizierung verwendet wird. Dieser Wert kann ein rohes JSON-Schlüsseldatei-Objekt oder ein Pfad zur JSON-Schlüsseldatei sein.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Wenn AUTH_TYPE=0 und der Wert OAuthPvtKeyPath nicht festgelegt sind

OAuthPvtKeyPath

Mit dieser Verbindungseigenschaft wird der Pfad zum Dienstkontoschlüssel festgelegt, wenn die Dienstkontoauthentifizierung verwendet wird.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Wenn AUTH_TYPE=0 und die Werte OAuthPvtKey und OAuthServiceAcctEmail nicht festgelegt sind

OAuthRefreshToken

Mit dieser Verbindungseigenschaft wird das Aktualisierungstoken für die Authentifizierung mit einem vorab generierten Aktualisierungstoken festgelegt. Ein OAuth 2.0-Aktualisierungstoken ist ein spezielles Token, mit dem eine Anwendung ein neues Zugriffstoken abrufen kann, wenn das aktuelle abläuft, ohne dass der Nutzer sich neu authentifizieren muss.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Wenn AUTH_TYPE=2

OAuthServiceAcctEmail

Mit dieser Verbindungseigenschaft wird die E-Mail-Adresse des Dienstkontos festgelegt, wenn die Dienstkonto-Authentifizierung verwendet wird.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Wenn AUTH_TYPE=0 und der Wert OAuthPvtKeyPath nicht festgelegt sind

OAuthType

Mit dieser Verbindungseigenschaft wird der Authentifizierungstyp angegeben. Der Wert muss einer der folgenden sein:

  • 0: Authentifizierung mit Google-Dienstkonto
  • 1: Authentifizierung von Google-Nutzerkonten
  • 2: Vorab generiertes Aktualisierungstoken oder Authentifizierung mit Zugriffstoken
  • 3: Authentifizierung mit Standardanmeldedaten für Anwendungen
  • 4: Externe Authentifizierungsmethoden wie die Mitarbeiteridentitätsföderation oder die Identitätsföderation von Arbeitslasten

  • Standardwert: -1
  • Datentyp: Ganzzahl
  • Erforderlich: Ja

PartnerToken

Diese Verbindungseigenschaft wird von Google Cloud -Partnern verwendet, um die Nutzung des Treibers zu erfassen.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nein

PrivateServiceConnectUris

Dieses Verbindungsparameter entspricht dem Parameter EndpointOverrides. Verwenden Sie stattdessen die Property EndpointOverrides.

ProjectId

Mit dieser Verbindungseigenschaft wird die Standardprojekt-ID für den Treiber festgelegt. Dieses Projekt wird zum Ausführen von Abfragen verwendet und die Ressourcennutzung wird in Rechnung gestellt. Wenn sie nicht festgelegt ist, leitet der Treiber eine Projekt-ID ab.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nein, aber dringend empfohlen

ProxyHost

Mit dieser Verbindungseigenschaft wird der Hostname oder die IP-Adresse eines Proxyservers festgelegt, über den die JDBC-Verbindung weitergeleitet wird.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nein

ProxyPort

Mit dieser Verbindungseigenschaft wird die Portnummer festgelegt, an der der Proxyserver auf Verbindungen wartet.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nein

ProxyPwd

Mit dieser Verbindungseigenschaft wird das Passwort festgelegt, das für die Authentifizierung erforderlich ist, wenn eine Verbindung über einen Proxyserver hergestellt wird, der dies erfordert.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nein

ProxyUid

Mit dieser Verbindungseigenschaft wird der Nutzername festgelegt, der für die Authentifizierung erforderlich ist, wenn eine Verbindung über einen Proxyserver hergestellt wird, der dies erfordert.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nein

QueryDialect

Mit dieser Verbindungseigenschaft wird der SQL-Dialekt für die Ausführung von Abfragen festgelegt. Verwenden Sie SQL für GoogleSQL (sehr empfehlenswert) und BIG_QUERY für Legacy-SQL.

  • Standardwert: SQL
  • Datentyp: String
  • Erforderlich: Nein

QueryProperties

Mit dieser Verbindungseigenschaft werden Änderungen am Abfrageverhalten konfiguriert.

Hier ist ein Beispiel, das im Verbindungsstring festgelegt ist:

jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;
QueryProperties=dataset_project_id=TestProjectID,time_zone=America/New_York;

Hier sehen Sie ein Beispiel, das in der Klasse DataSource festgelegt ist:

Map<String, String> queryProperties = new HashMap<>();
queryProperties.put("dataset_project_id", "TestProjectID");
queryProperties.put("time_zone", "America/New_York");
DataSource dataSource = new DataSource();
dataSource.setQueryProperties(queryProperties);

Weitere Informationen finden Sie unter ConnectionProperty.

  • Standardwert: N/A
  • Datentyp: Map<String, String>
  • Erforderlich: Nein

RequestGoogleDriveScope

Diese Verbindungseigenschaft wird verwendet, um Zugriff auf Google Drive anzufordern. Wenn diese Option aktiviert ist, wird der Verbindung der schreibgeschützte Drive-Bereich hinzugefügt. Wenn Sie dieses Attribut aktivieren möchten, legen Sie den Wert auf 1 fest.

  • Standardwert: 0
  • Datentyp: Ganzzahl
  • Erforderlich: Nein

RetryInitialDelay

Mit dieser Verbindungseigenschaft wird die Verzögerung (in Sekunden) vor dem ersten Wiederholungsversuch festgelegt.

  • Standardwert: 0
  • Datentyp: Long
  • Erforderlich: Nein

RetryMaxDelay

Mit dieser Verbindungseigenschaft wird das maximale Limit (in Sekunden) für die Verzögerung bei Wiederholungsversuchen festgelegt.

  • Standardwert: 0
  • Datentyp: Long
  • Erforderlich: Nein

ServiceAccountImpersonationChain

Mit dieser Verbindungseigenschaft wird eine durch Kommas getrennte Liste von E-Mail-Adressen von Dienstkonten in der Identitätsübernahmekette angegeben.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nein

ServiceAccountImpersonationEmail

Mit dieser Verbindungseigenschaft wird die E-Mail-Adresse des Dienstkontos festgelegt, dessen Identität angenommen werden soll.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nein

ServiceAccountImpersonationScopes

Mit dieser Verbindungseigenschaft wird eine durch Kommas getrennte Liste von OAuth2-Bereichen angegeben, die mit dem imitierten Konto verwendet werden sollen.

  • Standardwert: https://www.googleapis.com/auth/bigquery
  • Datentyp: String
  • Erforderlich: Nein

ServiceAccountImpersonationTokenLifetime

Mit dieser Verbindungseigenschaft wird die Lebensdauer des Tokens für das imitierten Konto in Sekunden festgelegt.

  • Standardwert: 3600
  • Datentyp: Ganzzahl
  • Erforderlich: Nein

SSLTrustStore

Diese Verbindungseigenschaft gibt den vollständigen Pfad zum Java TrustStore an, der vertrauenswürdige Zertifizierungsstellenzertifikate enthält. Der Treiber verwendet diesen Truststore, um die Identität des Servers während des SSL/TLS-Handshakes zu validieren.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nein

SSLTrustStorePwd

Mit dieser Verbindungseigenschaft wird das Passwort für den Java-TrustStore angegeben, der in der Eigenschaft SSLTrustStore angegeben ist.

  • Standardwert: N/A
  • Datentyp: String
  • Erforderlich: Nur bei Verwendung eines passwortgeschützten Java TrustStore

SWA_ActivationRowCount

Mit dieser Verbindungseigenschaft wird ein Schwellenwert für die Anzahl der executeBatch insert Zeilen festgelegt. Wenn dieser überschritten wird, wechselt der Connector zur Storage Write API.

  • Standardwert: 3
  • Datentyp: Ganzzahl
  • Erforderlich: Nein

SWA_AppendRowCount

Mit dieser Verbindungseigenschaft wird die Größe des Schreibstreams festgelegt.

  • Standardwert: 1000
  • Datentyp: Ganzzahl
  • Erforderlich: Nein

Timeout

Mit dieser Verbindungseigenschaft wird die Zeit in Sekunden festgelegt, die der Connector einen fehlgeschlagenen API-Aufruf wiederholt, bevor eine Zeitüberschreitung auftritt.

  • Standardwert: 0
  • Datentyp: Long
  • Erforderlich: Nein

UniverseDomain

Mit dieser Verbindungseigenschaft wird die Universe-Domain festgelegt, die Top-Level-Domain, die den Google Cloud Ressourcen Ihrer Organisation zugeordnet ist.

  • Standardwert: googleapis.com
  • Datentyp: String
  • Erforderlich: Nein

UnsupportedHTAPIFallback

Mit dieser Verbindungseigenschaft wird festgelegt, ob der Connector auf die REST API zurückgreift (wenn sie auf TRUE festgelegt ist) oder einen Fehler zurückgibt (wenn sie auf FALSE festgelegt ist).

  • Standardwert: TRUE
  • Datentyp: Boolesch
  • Erforderlich: Nein

UseQueryCache

Mit dieser Verbindungseigenschaft wird das Zwischenspeichern von Abfragen aktiviert.

  • Standardwert: TRUE
  • Datentyp: Boolesch
  • Erforderlich: Nein