Usa el controlador ODBC para BigQuery
El controlador de conectividad abierta de bases de datos (ODBC) para BigQuery conecta tus aplicaciones que no son de Java a BigQuery, lo que te permite usar las funciones de BigQuery con la infraestructura y las herramientas que prefieras. Para conectar aplicaciones Java a BigQuery, usa el controlador JDBC para BigQuery.
El controlador ODBC para BigQuery está disponible bajo la licencia Apache 2.0.
Antes de comenzar
Asegúrate de conocer los controladores ODBC y los administradores de controladores.
Asegúrate de que tu sistema operativo cumpla con los siguientes requisitos:
Sistema operativo Arquitecturas admitidas Versión y dependencias mínimas Windows 32 bits (x86) y 64 bits (x64) Versión: Windows 10, Windows Server 2016 o posterior
Dependencia: Microsoft Visual C++ Redistributable para Visual Studio 2019 o 2022macOS 64 bits (x86_64), ARM64 (Apple Silicon) Versión: macOS 12 (Monterey) o posterior
Dependencia: Un administrador de controladores ODBC (por ejemplo, unixODBC). Asegúrate de agregar el directorio de instalación a tuDYLD_LIBRARY_PATH.Linux 64 bits (x86_64) Versión: Cualquier distribución con glibc 2.27 o posterior (por ejemplo, Ubuntu 20.04 LTS+, Debian 11+)
Dependencia: Un administrador de controladores ODBC (por ejemplo, unixODBC). Asegúrate de agregar el directorio de instalación a tuLD_LIBRARY_PATH.Autentícate en BigQuery y toma nota de la siguiente información, que se usará más adelante cuando establezcas una conexión con el controlador ODBC para BigQuery. Solo debes anotar la información que corresponde al método de autenticación que usas.
Método de autenticación Información de autenticación Ejemplo Propiedad de conexión (para configurar más adelante) Cuenta de servicio estándar Clave de la cuenta de servicio (objeto JSON) my-sa-key.jsonKeyFilePathIdentidad temporal como cuenta de servicio Dirección de correo electrónico de la cuenta de servicio de destino service-account@project.s3ns.iam.gserviceaccount.comServiceAccountImpersonationEmail, KeyFilePathFederación de identidades para cargas de trabajo o federación de identidades de personal Propiedad de público del archivo de configuración de la cuenta externa //iam.googleapis.com/locations/global/...BYOID_AudienceUrlRecuperación de tokens y archivo de información del entorno {"file":"/path/to/file"}BYOID_CredentialSourceProyecto del usuario (solo para el grupo de personal) my_projectBYOID_PoolUserProjectTipo de token de STS id_tokenBYOID_SubjectTokenTypeExtremo de intercambio de tokens de STS https://sts.googleapis.com/v1/tokenBYOID_TokenUrlCredencial predeterminada de la aplicación Ninguno N/A N/A
Instala y configura el controlador ODBC
Puedes instalar y configurar el controlador ODBC para BigQuery con un sistema operativo Windows o que no sea de Windows.
Windows
Instala el controlador que corresponda a la arquitectura de tu aplicación:
- Descarga el archivo
ODBCDriverforBigQuery_windows_x86.msipara aplicaciones de 32 bits. - Descarga el archivo
ODBCDriverforBigQuery_windows_x64.msipara aplicaciones de 64 bits.
- Descarga el archivo
Para crear un nombre de fuente de datos (DSN), haz lo siguiente:
- En el menú Inicio de Windows, ve a Orígenes de datos ODBC y selecciona la versión que tenga la misma cantidad de bits que tu aplicación cliente.
- En la página Administrador de fuentes de datos ODBC, haz clic en la pestaña Controladores.
- En la lista de controladores ODBC instalados, busca ODBC Driver for BigQuery.
- Selecciona la pestaña DSN del sistema para crear un DSN para todos los usuarios o la pestaña DSN del usuario para crear un DSN para el usuario actual. En general, se recomiendan los DSN del sistema, ya que algunas aplicaciones cargan datos con diferentes cuentas de usuario y es posible que no detecten otros DSN del usuario.
- Haz clic en Agregar.
- En el diálogo Crear fuente de datos nueva, selecciona Controlador ODBC para BigQuery y, luego, haz clic en Finalizar. Se abrirá el diálogo ODBC Driver for BigQuery DSN Setup.
- En el campo Nombre de la fuente de datos, ingresa un nombre para tu DSN.
- Agrega propiedades de conexión. Para obtener una lista completa de las propiedades, consulta Propiedades de conexión.
Sistemas operativos que no son de Windows
Instala el controlador que corresponda a tu sistema operativo:
- Descarga el archivo
ODBCDriverforBigQuery_linux_latest.zippara Linux. - Descarga el archivo
ODBCDriverforBigQuery_macos_latest.tar.gzpara macOS.
- Descarga el archivo
Extrae el contenido del archivo ZIP o TAR que descargaste.
Mueve el contenido del archivo ZIP o TAR al directorio en el que deseas instalar el controlador. La ruta del objeto compartido del controlador ODBC para BigQuery es
INSTALL_DIR/lib/libgoogle_cloud_odbc_bq_driver.so, dondeINSTALL_DIRes tu directorio de instalación.Actualiza tus archivos
.inipara que reflejen la nueva ruta del controlador.En el siguiente ejemplo, se actualizan los archivos
.inien un sistema 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
Reemplaza
VERSIONpor la versión del controlador.
Establece la conexión
Para establecer una conexión entre tu aplicación y BigQuery con el controlador ODBC para BigQuery, identifica tu cadena de conexión. Puedes omitir este paso si ya configuraste las propiedades de conexión a través de tu DSN.
La cadena de conexión tiene el siguiente formato:
Driver=ODBC Driver for BigQuery;Catalog=PROJECT_ID;OAuthMechanism=AUTH_TYPE;AUTH_PROPS;OTHER_PROPS
Reemplaza lo siguiente:
PROJECT_ID: Es el ID de tu proyecto de BigQuery.AUTH_TYPE: Es un número que especifica el tipo de autenticación que usaste. Selecciona una de las siguientes opciones:0: Para la autenticación de la cuenta de servicio3: Para la autenticación con credenciales predeterminadas de la aplicación4: Para la autenticación de la federación de identidades para cargas de trabajo o la federación de identidades de personal
AUTH_PROPS: La información de autenticación que anotaste cuando te autenticaste en BigQuery, que se muestra en el formatoproperty_1=value_1; property_2=value_2;..., por ejemplo,KeyFilePath=my-sa-key.json, si te autenticaste con una cuenta de servicio.OTHER_PROPS(opcional): Propiedades de conexión adicionales para el controlador ODBC, que se indican en el formatoproperty_1=value_1; property_2=value_2;.... Para obtener una lista completa de las propiedades de conexión, consulta Propiedades de conexión.
Propiedades de la conexión
Las propiedades de conexión del controlador ODBC son parámetros de configuración que se incluyen en la cadena de conexión cuando estableces una conexión a una base de datos. El controlador ODBC para BigQuery admite las siguientes propiedades de conexión.
| Propiedad de conexión | Descripción | Valor predeterminado | Tipo de datos | Obligatorio |
|---|---|---|---|---|
AdditionalProjects |
Son los proyectos a los que el controlador puede acceder para realizar consultas y operaciones de metadatos, además del proyecto principal establecido por la propiedad Catalog.
|
N/A | Cadena separada por comas | No |
AllowHtapiForLargeResults |
Determina si el controlador puede usar la API de BigQuery Storage Read. | 0 |
Booleano | No |
AllowLargeResults |
Determina si el controlador procesa los resultados de la consulta que son mayores a 128 MB cuando la propiedad SQLDialect se establece en 0 (SQL heredado). Si la propiedad SQLDialect se establece en 1 (GoogleSQL), el controlador siempre procesa los resultados de consultas grandes.
|
0 |
Booleano | No |
BYOID_AudienceUrl |
Contiene el nombre del recurso del grupo de identidades para cargas de trabajo o el grupo de personal y el identificador del proveedor en ese grupo. | N/A | String | Solo cuando OAuthMechanism=4 |
BYOID_CredentialSource |
Establece la información necesaria para recuperar el token, así como información del entorno. | N/A | String | Solo cuando OAuthMechanism=4 |
BYOID_PoolUserProject |
Establece el proyecto cuando sea un grupo de personal y no un grupo de Workload Identity. | N/A | String | Solo cuando OAuthMechanism=4 y se usa un grupo de trabajadores |
BYOID_SubjectTokenType |
Establece el tipo de token del STS según la especificación del intercambio de tokens de OAuth 2.0. Los valores esperados incluyen lo siguiente:
|
N/A | String | Solo cuando OAuthMechanism=4 |
BYOID_TokenUrl |
Establece el extremo de intercambio de tokens del STS. | https://sts.googleapis.com/v1/token |
String | No |
Catalog |
Es el ID del proyecto de BigQuery predeterminado para el controlador. El controlador usa este proyecto para ejecutar consultas y lo factura por el uso de recursos. | N/A | String | Sí |
DefaultDataset |
Actúa como un conjunto de datos designado dentro de un proyecto al que el controlador hace referencia automáticamente cuando ejecutas consultas sin especificar explícitamente un conjunto de datos. | N/A | String | No |
EnableSession |
Determina si una conexión inicia una sesión. Cuando está habilitada, la primera consulta que ejecuta esa conexión en particular inicia una sesión, y el controlador pasa el ID de sesión a todas las consultas posteriores. | 0 |
Booleano | No |
FilterTablesOnDefaultDataset |
Determina el alcance de los metadatos que devuelven los métodos de metadatos de tablas o columnas. Cuando es falso (0), no se aplica ningún filtro. También debes establecer la propiedad DefaultDataset para habilitar el filtrado.
|
0 |
Booleano | No |
IgnoreTransactions |
Cuando está habilitado (1 o TRUE), el controlador omite el control manual de transacciones (BEGIN TRANSACTION, COMMIT, ROLLBACK) cuando SQL_ATTR_AUTOCOMMIT se establece en SQL_AUTOCOMMIT_OFF.
Se recomienda para herramientas de terceros de IE y clientes de SQL (como Tableau, Power BI y DBeaver) que inhabilitan la confirmación automática de forma predeterminada.
|
0 |
Booleano | No |
JobCreationMode |
Te permite habilitar la ruta de consulta de baja latencia. Elige una de las siguientes opciones:
|
2 |
Número entero | No |
KeyFilePath |
Ruta de acceso al archivo JSON de la clave de la cuenta de servicio cuando se usa la autenticación de la cuenta de servicio. | N/A | String |
Solo cuando OAuthMechanism=0
|
KMSKeyName |
Especifica el nombre del recurso de la clave de Cloud KMS que se usará cuando se encripten y desencripten los datos. | N/A | String | No |
LargeResultsDataSetId |
Especifica el conjunto de datos de destino para almacenar los resultados de las consultas grandes. | N/A | String | No |
LargeResultsTempTableExpirationTime |
Especifica la vida útil de las tablas temporales en LargeResultsDataSetId, en milisegundos.
|
3600000 |
Largo | No |
LogLevel |
Limita el detalle que el controlador registra durante las interacciones. Para obtener más información, consulta Configuración del registro y del controlador.
Elige una de las siguientes opciones:
|
0 |
Número entero | No |
LogPath |
Especifica el directorio en el que el controlador escribe los archivos de registro. Para obtener más información, consulta Configuración del registro y del controlador. | N/A | String | No |
LogFileCount |
Especifica la cantidad máxima de archivos de registro que se deben conservar. | 0 |
Número entero | No |
LogFileSize |
Especifica el tamaño máximo de cada archivo de registro en KB. | 0 |
Largo | No |
MaxRetries |
Configura la cantidad máxima de intentos de reintento que ejecuta el controlador con una retirada exponencial al encontrar errores transitorios de la API de BigQuery REST y gRPC (como límites de frecuencia o errores HTTP 5xx) antes de devolver un error. | 6 |
Número entero | No |
MaxThreads |
Define la cantidad máxima de subprocesos que el controlador puede usar para el procesamiento simultáneo en un grupo de subprocesos. Para configurar esta propiedad como un parámetro de configuración para todo el controlador en entornos que no son de Windows, especifícala en el archivo googlebigqueryodbc.ini.
|
8 |
Número entero | No |
OAuthMechanism |
Es el tipo de autenticación. Elige una de las siguientes opciones:
|
N/A | Número entero | Sí |
PrivateServiceConnectUris |
Son extremos personalizados para reemplazar los extremos predeterminados. Ejemplos:
|
N/A | Cadena separada por comas | No |
ProxyHost |
Nombre de host o dirección IP de un servidor proxy. | N/A | String | No |
ProxyPort |
Número de puerto en el que escucha el servidor proxy. | N/A | String | No |
ProxyPwd |
Contraseña para la autenticación cuando se conecta a través de un servidor proxy. | N/A | String | No |
ProxyUid |
Nombre de usuario para la autenticación cuando se conecta a través de un servidor proxy. | N/A | String | No |
QueryProperties |
Configura propiedades que pueden modificar el comportamiento de la búsqueda. | N/A | Map<String, String> | No |
RefreshToken |
Es el token de actualización de OAuth almacenado para los flujos de autenticación de usuarios. | N/A | String | No |
RowsFetchedPerBlock |
Especifica la cantidad máxima de filas recuperadas por bloque o página de resultados de BigQuery. | 100000 |
Largo | No |
ServiceAccountImpersonationEmail |
Especifica una dirección de correo electrónico de cuenta de servicio de destino para suplantar la identidad con las credenciales básicas del llamador. Permite flujos de trabajo de delegación de múltiples arrendatarios y de privilegio mínimo sin distribuir claves privadas adicionales de cuentas de servicio. | N/A | String | No |
SessionLocation |
Especifica la ubicación geográfica (región o multirregión) en la que el controlador crea o consulta conjuntos de datos y ejecuta sesiones de consulta (por ejemplo, US, EU o us-central1).
|
N/A | String | No |
SQLDialect |
Especifica qué dialecto de consulta se debe usar. Usa 1 para GoogleSQL (SQL estándar, muy recomendado) y 0 para SQL heredado.
|
1 |
Número entero | No |
TrustedCerts |
Especifica la ruta de acceso completa a un archivo de certificados de CA raíz SSL/TLS personalizado con formato PEM (por ejemplo, roots.pem o cacerts.pem). Anula el archivo de certificado incluido predeterminado.
|
N/A | String | No |
UniverseDomain |
Especifica el dominio del universo de tu organización. | googleapis.com |
String | No |
UseDefaultLargeResultsDataset |
Cuando es AllowLargeResults=1, determina si el controlador enruta automáticamente los resultados de consultas grandes al conjunto de datos temporales predeterminado (_bqodbc_temp_tables). Cuando se establece en 0, se debe especificar LargeResultsDataSetId de forma explícita.
|
1 |
Booleano | No |
UseQueryCache |
Habilita la función de almacenamiento en caché de consultas en BigQuery. | true |
Booleano | No |
UseSystemTrustStore |
Solo para Windows. Indica al controlador que cargue y valide los certificados TLS en el almacén de certificados de confianza de Windows en lugar de buscar un archivo PEM local. | 0 |
Booleano | No |
Asignación de tipos de datos
Cuando ejecutas consultas a través del controlador ODBC para BigQuery, se produce la siguiente asignación de tipos de datos:
| Tipo de GoogleSQL | Tipo de SQL de 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 |
Configuración de registros y controladores
Para configurar opciones en todo el controlador (como el registro y la codificación de caracteres), haz lo siguiente:
Windows
Configura las opciones de registro y DSN con el diálogo de configuración de DSN en el Administrador de fuentes de datos ODBC.
Sistemas operativos que no son de Windows
Crea o edita un archivo de configuración, como
googlebigqueryodbc.ini, y agrega opciones de controladores en la sección[Driver]. A continuación, se incluye un ejemplo:[Driver] LogLevel=3 LogPath=/path/to/log/directory LogFileCount=200 LogFileSize=1000 MaxThreads=8 WcharEncoding=UTF-16LEEstablece la variable de entorno
GOOGLEBIGQUERYODBCINIen la ruta de acceso a este archivo:export GOOGLEBIGQUERYODBCINI=/path/to/googlebigqueryodbc.ini
Niveles de registro del controlador
El controlador admite niveles de registro del 0 al 3. Te recomendamos que comiences con LogLevel=3 (INFO) para solucionar problemas.
| Nivel de registro de ODBC | Descripción |
|---|---|
| 0 (APAGADO) | Inhabilita todos los registros. |
| 1 (ERROR) | Registra eventos de error. |
| 2 (ADVERTENCIA) | Registra eventos de advertencia. |
| 3 (INFO) | Registra información general que describe el progreso del conductor. |
Propiedades de configuración de todo el controlador (no para Windows)
Las siguientes propiedades se pueden configurar en la sección [Driver] de googlebigqueryodbc.ini:
| Propiedad | Descripción | Valores permitidos | Valor predeterminado |
|---|---|---|---|
WcharEncoding |
Controla de forma explícita la codificación de transmisión de los búferes de caracteres SQLWCHAR cuando se pasan cadenas de caracteres anchos entre el controlador y el administrador de controladores ODBC (por ejemplo, WcharEncoding=UTF-16LE). Esto resuelve los problemas de corrupción y truncamiento de caracteres en unixODBC (por lo general, UTF-16LE de 2 bytes) y iODBC (por lo general, UTF-32LE de 4 bytes).
|
UTF-8, UTF-16LE, UTF-32LE |
Vacío (se detecta automáticamente según sizeof(SQLWCHAR)) |
MaxThreads |
Define la cantidad máxima de subprocesos que el controlador puede usar para el procesamiento simultáneo en un grupo de subprocesos. | Número entero positivo | 8 |
Ejemplos
En los siguientes ejemplos, se muestra cómo usar consultas con parámetros y secuencias de comandos de varias instrucciones con el controlador ODBC.
Consultas con parámetros
// 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);
Secuencias de comandos de varias instrucciones
// 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);
Precios
Puedes descargar el controlador ODBC para BigQuery sin costo. Sin embargo, cuando usas el controlador, se aplican los precios estándar de análisis de BigQuery.
¿Qué sigue?
- Obtén más información sobre el controlador JDBC para BigQuery.
- Explora otras herramientas para desarrolladores de BigQuery.