Utiliser le pilote ODBC pour BigQuery
Le pilote Open Database Connectivity (ODBC) pour BigQuery connecte vos applications non Java à BigQuery, ce qui vous permet d'utiliser les fonctionnalités de BigQuery avec vos outils et votre infrastructure préférés. Pour connecter des applications Java à BigQuery, utilisez le pilote JDBC pour BigQuery.
Le pilote ODBC pour BigQuery est disponible sous la licence Apache 2.0.
Avant de commencer
Assurez-vous de bien maîtriser les pilotes ODBC et les gestionnaires de pilotes.
Assurez-vous que votre système d'exploitation répond aux exigences suivantes :
Système d'exploitation Architectures compatibles Version minimale et dépendances Windows 32 bits (x86), 64 bits (x64) Version : Windows 10, Windows Server 2016 ou version ultérieure
Dépendance : Microsoft Visual C++ Redistributable pour Visual Studio 2019 ou 2022macOS 64 bits (x86_64), ARM64 (Apple Silicon) Version : macOS 12 (Monterey) ou version ultérieure
Dépendance : un gestionnaire de pilotes ODBC (par exemple, unixODBC). Assurez-vous d'ajouter le répertoire d'installation à votreDYLD_LIBRARY_PATH.Linux 64 bits (x86_64) Version : toute distribution avec glibc 2.27 ou version ultérieure (par exemple, Ubuntu 20.04 LTS+, Debian 11+)
Dépendance : un gestionnaire de pilotes ODBC (par exemple, unixODBC). Assurez-vous d'ajouter le répertoire d'installation à votreLD_LIBRARY_PATH.Authentifiez-vous auprès de BigQuery et notez les informations suivantes, qui seront utilisées ultérieurement lorsque vous établirez une connexion avec le pilote ODBC pour BigQuery. Vous n'avez besoin de noter que les informations correspondant à la méthode d'authentification que vous utilisez.
Méthode d'authentification Informations d'authentification Exemple Propriété de connexion (à définir ultérieurement) Compte de service standard Clé de compte de service (objet JSON) my-sa-keyKeyFilePathFédération d'identité de charge de travail ou fédération des identités des employés Propriété "audience" du fichier de configuration du compte externe //iam.googleapis.com/locations/global/...BYOID_AudienceUrlFichier d'informations sur l'environnement et récupération du jeton {"file":"/path/to/file"}BYOID_CredentialSourceProjet utilisateur (uniquement pour le pool d'employés) my_projectBYOID_PoolUserProjectType de jeton STS id_tokenBYOID_SubjectTokenTypePoint de terminaison d'échange de jetons STS https://sts.googleapis.com/v1/tokenBYOID_TokenUrlIdentifiants par défaut de l'application Aucun N/A N/A
Installer et configurer le pilote ODBC
Vous pouvez installer et configurer le pilote ODBC pour BigQuery à l'aide d'un système d'exploitation Windows ou non.
Windows
Installez le pilote qui correspond à l'architecture de votre application :
- Téléchargez le fichier
ODBCDriverforBigQuery_windows_x86.msipour les applications 32 bits. - Téléchargez le fichier
ODBCDriverforBigQuery_windows_x64.msipour les applications 64 bits.
- Téléchargez le fichier
Créez un nom de source de données (DSN) en procédant comme suit :
- Dans le menu Démarrer de Windows, accédez à Sources de données ODBC, puis sélectionnez la version qui a la même architecture que votre application cliente.
- Sur la page Administrateur de sources de données ODBC, cliquez sur l'onglet Pilotes.
- Dans la liste des pilotes ODBC installés, recherchez Pilote ODBC pour BigQuery.
- Sélectionnez l'onglet DSN système pour créer un DSN pour tous les utilisateurs ou l'onglet DSN utilisateur pour créer un DSN pour l'utilisateur actuel. Les DSN système sont généralement recommandés, car certaines applications chargent les données à l'aide de différents comptes utilisateur et peuvent ne pas détecter les autres DSN utilisateur.
- Cliquez sur Ajouter.
- Dans la boîte de dialogue Créer une source de données, sélectionnez Pilote ODBC pour BigQuery, puis cliquez sur Terminer. La boîte de dialogue Configuration du DSN du pilote ODBC pour BigQuery s'ouvre.
- Dans le champ Nom de la source de données, saisissez le nom de votre DSN.
- Ajoutez des propriétés de connexion. Pour obtenir la liste complète des propriétés, consultez Propriétés de la connexion.
Non-Windows
Installez le pilote correspondant à votre système d'exploitation :
- Téléchargez le fichier
ODBCDriverforBigQuery_linux_latest.zippour Linux. - Téléchargez le fichier
ODBCDriverforBigQuery_macos_latest.tar.gzpour macOS.
- Téléchargez le fichier
Extrayez le contenu du fichier ZIP ou TAR téléchargé.
Déplacez le contenu du fichier ZIP ou TAR vers le répertoire dans lequel vous souhaitez installer le connecteur. Le chemin d'accès à l'objet partagé du pilote ODBC pour BigQuery est
INSTALL_DIR/lib/libgoogle_cloud_odbc_bq_driver.so, oùINSTALL_DIRcorrespond à votre répertoire d'installation.Mettez à jour vos fichiers
.inipour refléter le nouveau chemin d'accès au connecteur.L'exemple suivant met à jour les fichiers
.inidans un système Linux :unzip linux_odbc-driver.VERSION.zip -d linux_odbc-driver.VERSION/ cd ./linux_odbc-driver.VERSION export INSTALL_DIR=$(pwd) export ODBCINI=$INSTALL_DIR/odbc.ini export ODBCINSTINI=$INSTALL_DIR/odbcinst.ini export GOOGLEBIGQUERYODBCINI=$INSTALL_DIR/googlebigqueryodbc.ini
Remplacez
VERSIONpar la version du pilote.
Établir une connexion
Pour établir une connexion entre votre application et BigQuery avec le pilote ODBC pour BigQuery, identifiez votre chaîne de connexion. Vous pouvez ignorer cette étape si vous avez déjà configuré les propriétés de connexion via votre DSN.
La chaîne de connexion se présente au format suivant :
Driver=ODBC Driver for BigQuery;ProjectId=PROJECT_ID;OAuthType=AUTH_TYPE;AUTH_PROPS;OTHER_PROPS
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet BigQuery.AUTH_TYPE: nombre spécifiant le type d'authentification que vous avez utilisé. Sélectionnez l'une des options suivantes :0: pour l'authentification du compte de service3: pour l'authentification avec les identifiants par défaut de l'application4: pour l'authentification par fédération d'identité de charge de travail ou fédération des identités des employés
AUTH_PROPS: informations d'authentification que vous avez notées lorsque vous vous êtes authentifié auprès de BigQuery, listées au formatproperty_1=value_1; property_2=value_2;..., par exempleKeyFilePath=my-sa-keysi vous vous êtes authentifié avec un compte de service.OTHER_PROPS(facultatif) : propriétés de connexion supplémentaires pour le pilote ODBC, listées au formatproperty_1=value_1; property_2=value_2;.... Pour obtenir la liste complète des propriétés de connexion, consultez Propriétés de connexion.
Propriétés de connexion
Les propriétés de connexion du pilote ODBC sont des paramètres de configuration que vous incluez dans la chaîne de connexion lorsque vous établissez une connexion à une base de données. Le pilote ODBC pour BigQuery est compatible avec les propriétés de connexion suivantes.
| Propriété de connexion | Description | Valeur par défaut | Type de données | Obligatoire |
|---|---|---|---|---|
AdditionalProjects |
Projets auxquels le pilote peut accéder pour les requêtes et les opérations sur les métadonnées, en plus du projet principal défini par la propriété ProjectId.
|
N/A | Chaîne séparée par des virgules | Non |
AllowHtapiForLargeResults |
Détermine si le pilote peut utiliser l'API BigQuery Storage Read. | 0 |
Booléen | Non |
AllowLargeResults |
Détermine si le pilote traite les résultats de requête supérieurs à 128 Mo lorsque la propriété QueryDialect est définie sur BIG_QUERY. Si la propriété QueryDialect est définie sur SQL, le pilote traite toujours les résultats de requête volumineux.
|
0 |
Booléen | Non |
BYOID_AudienceUrl |
Contient le nom de ressource du pool d'identités de charge de travail ou du pool de personnel, ainsi que l'identifiant du fournisseur dans ce pool. | N/A | Chaîne | Uniquement lorsque OAuthMechanism=4 |
BYOID_CredentialSource |
Définit les informations nécessaires pour récupérer le jeton lui-même, ainsi que certaines informations sur l'environnement. | N/A | Chaîne | Uniquement lorsque OAuthMechanism=4 |
BYOID_PoolUserProject |
Définissez le projet lorsqu'il s'agit d'un pool d'identité de personnel et non d'un pool d'Workload Identity. | N/A | Chaîne | Uniquement lorsque OAuthMechanism=4 est utilisé et qu'un pool d'employés est utilisé |
BYOID_SubjectTokenType |
Définit le type de jeton STS en fonction de la spécification d'échange de jetons OAuth 2.0. Les valeurs attendues incluent :
|
N/A | Chaîne | Uniquement lorsque OAuthMechanism=4 |
BYOID_TokenUrl |
Définit le point de terminaison d'échange de jetons STS. | https://sts.googleapis.com/v1/token |
Chaîne | Non |
DefaultDataset |
Il s'agit d'un ensemble de données désigné dans un projet auquel le pilote fait automatiquement référence lorsque vous exécutez des requêtes sans spécifier explicitement un ensemble de données. | N/A | Chaîne | Non |
FilterTablesOnDefaultDataset |
Détermine le champ d'application des méthodes de métadonnées de table ou de colonne renvoyées. Si la valeur est "false", aucun filtrage n'est effectué. Vous devez également définir la propriété DefaultDataset pour activer le filtrage.
|
FALSE |
Booléen | Non |
EnableSession |
Détermine si une connexion démarre une session. Lorsqu'elle est activée, la première requête exécutée par cette connexion démarre une session, et le pilote transmet l'ID de session à toutes les requêtes suivantes. | 0 |
Booléen | Non |
JobCreationMode |
Vous permet d'activer le chemin de requête à faible latence. Choisissez l'une des options suivantes :
|
2 |
Integer | Non |
KeyFilePath |
Chemin d'accès à la clé du compte de service lors de l'utilisation de l'authentification par compte de service. | N/A | Chaîne |
Uniquement lorsque OAuthMechanism=0
|
KMSKeyName |
Spécifie le nom de la clé KMS à utiliser pour chiffrer et déchiffrer les données. | N/A | Chaîne | Non |
LargeResultsDataSetId |
Spécifie l'ensemble de données de destination pour stocker les résultats de requête volumineux. | N/A | Chaîne | Non |
LargeResultsDatasetExpirationTime |
Spécifie la durée de vie de toutes les tables de l'ensemble de données de résultats volumineux, en millisecondes. | 3600000 |
Long | Non |
Location |
Spécifie l'emplacement où le pilote crée ou interroge les ensembles de données. | N/A | Chaîne | Non |
LogLevel |
Limite le niveau de détail des journaux du pilote lors des interactions. Choisissez l'une des options suivantes :
|
0 |
Integer | Non |
LogPath |
Spécifie le répertoire dans lequel le pilote écrit les fichiers journaux. | N/A | Chaîne | Non |
LogFileCount |
Spécifie le nombre maximal de fichiers journaux à conserver. | 0 |
Integer | Non |
LogFileSize |
Spécifie la taille maximale de chaque fichier journal en octets. | 0 |
Long | Non |
MaxResults |
Spécifie le nombre de résultats par page dans le résultat de l'API BigQuery. | 10000 |
Long | Non |
MaxThreads |
Définit le nombre maximal de threads que le connecteur peut utiliser pour le traitement simultané dans un pool de threads. Pour configurer cette propriété en tant que paramètre à l'échelle du connecteur pour les connecteurs non Windows, spécifiez-la dans le fichier googlebigqueryodbc.ini.
|
8 |
Integer | Non |
OAuthMechanism |
Type d'authentification. Choisissez l'une des options suivantes :
|
N/A | Integer | Oui |
ProjectId |
ID du projet par défaut pour le pilote. Le pilote utilise ce projet pour exécuter les requêtes et le facture pour l'utilisation des ressources. | N/A | Chaîne | Oui |
ProxyHost |
Nom d'hôte ou adresse IP d'un serveur proxy. | N/A | Chaîne | Non |
ProxyPort |
Numéro de port sur lequel le serveur proxy écoute. | N/A | Chaîne | Non |
ProxyPwd |
Mot de passe pour l'authentification lors de la connexion via un serveur proxy. | N/A | Chaîne | Non |
ProxyUid |
Nom d'utilisateur pour l'authentification lors de la connexion via un serveur proxy. | N/A | Chaîne | Non |
PrivateServiceConnectUris |
Points de terminaison personnalisés pour remplacer les points de terminaison par défaut. Exemples :
|
N/A | Chaîne séparée par des virgules | Non |
QueryDialect |
Spécifie le dialecte de requête à utiliser. Utilisez SQL pour GoogleSQL (fortement recommandé) et BIG_QUERY pour l'ancien SQL.
|
SQL |
Chaîne | Non |
QueryProperties |
Configure les propriétés qui peuvent modifier le comportement de la requête. | N/A | Map<String, String> | Non |
UniverseDomain |
Spécifie le domaine de l'univers pour votre organisation. | googleapis.com |
Chaîne | Non |
UseQueryCache |
Active la fonctionnalité de mise en cache des requêtes dans BigQuery. | true |
Booléen | Non |
Mappage des types de données
Lorsque vous exécutez des requêtes via le pilote ODBC pour BigQuery, le mappage des types de données suivant se produit :
| Type GoogleSQL | Type SQL ODBC |
|---|---|
INT64 | SQL_BIGINT |
BOOL | SQL_BIT |
DATE | SQL_TYPE_DATE |
FLOAT64 | SQL_DOUBLE |
TIME | SQL_TYPE_TIME |
TIMESTAMP | SQL_TYPE_TIMESTAMP |
DATETIME | SQL_TYPE_TIMESTAMP |
BYTES | SQL_VARBINARY |
STRING | SQL_VARCHAR |
ARRAY | SQL_VARCHAR |
STRUCT | SQL_VARCHAR |
INTERVAL | SQL_VARCHAR |
JSON | SQL_VARCHAR |
GEOGRAPHY | SQL_VARCHAR |
RANGE | SQL_VARCHAR |
NUMERIC | SQL_NUMERIC |
BIGNUMERIC | SQL_NUMERIC |
Exemples
Les exemples suivants montrent comment utiliser des requêtes paramétrées et des scripts à plusieurs instructions avec le pilote ODBC.
Requêtes paramétrées
// 1. Prepare statement std::string insert_stmt = "INSERT INTO MyTable VALUES (?, ?, ?)"; status = SQLPrepare(hstmt, (SQLCHAR*)insert_stmt.c_str(), SQL_NTS); // 2. Bind parameters std::string str_val = "example_string"; long long int_val = 12345; double float_val = 1.2345; // Bind string field status = SQLBindParameter( hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, 50, 0, (SQLPOINTER)str_val.c_str(), str_val.size(), NULL); // Bind integer field status = SQLBindParameter( hstmt, 2, SQL_PARAM_INPUT, SQL_C_UBIGINT, SQL_BIGINT, 0, 0, &int_val, 0, NULL); // Bind float field status = SQLBindParameter( hstmt, 3, SQL_PARAM_INPUT, SQL_C_DOUBLE, SQL_DOUBLE, 0, 0, &float_val, 0, NULL); // 3. Execute statement status = SQLExecute(hstmt);
Scripts à plusieurs instructions
// 1. Prepare and execute the multi-statement script std::string query = "CREATE OR REPLACE TABLE MyTable (StringField STRING, IntegerField INTEGER); " "INSERT INTO MyTable VALUES ('example', 123); " "SELECT * FROM MyTable;"; status = SQLExecDirect(hstmt, (SQLCHAR*)query.c_str(), SQL_NTS); // 2. Process results for each statement using SQLMoreResults do { SQLSMALLINT num_cols; status = SQLNumResultCols(hstmt, &num_cols); if (num_cols > 0) { // This is a result-returning statement (e.g., SELECT) while (SQLFetch(hstmt) == SQL_SUCCESS) { // Process rows... } } else { // This is a non-result statement (e.g., CREATE, INSERT) SQLLEN row_count; SQLRowCount(hstmt, &row_count); // Process affected rows... } } while (SQLMoreResults(hstmt) == SQL_SUCCESS);
Tarifs
Vous pouvez télécharger sans frais le pilote ODBC pour BigQuery. Toutefois, lorsque vous utilisez le pilote, les tarifs standards d'analyse BigQuery s'appliquent.
Étapes suivantes
- En savoir plus sur le pilote JDBC pour BigQuery
- Découvrez d'autres outils pour les développeurs BigQuery.