- Drivers ADBC
- Db2
Sem CLI ou JCC
Implementa o próprio protocolo IBM DRDA, do zero em Go. Sem IBM Data Server Client, JAR JDBC/JCC ou runtime nativo — apenas pip install.
Bidirecional com GizmoSQL
Transmita uma tabela do Db2 para o GizmoSQL ou envie dados de volta — em Python (ADBC para ADBC) ou inteiramente em SQL pelo DuckDB via adbc_scanner.
Em pipeline e colunar
Várias linhas são processadas por ida e volta DRDA na entrada, e os resultados retornam como lotes de registros Arrow — diretamente para pandas, Polars ou DuckDB.
Uma API C. Todas as linguagens.
Os exemplos desta página estão em Python, mas ADBC expõe cada driver como uma biblioteca compartilhada compatível com C — o mesmo núcleo nativo funciona em Go, Rust, Java, C#, C/C++, JavaScript e outras linguagens. Um driver para toda arquitetura.
Comece a usar
Um pip install e uma string de conexão. Sem IBM Data Server Client, JAR JCC ou runtime nativo para preparar.
1# pip install adbc-driver-db2 — no IBM CLI, no JCC
2import adbc_driver_db2.dbapi as db2
3
4with db2.connect(uri=uri, username=user, password=pw) as conn, conn.cursor() as cur:
5 cur.execute("SELECT * FROM SYSCAT.TABLES FETCH FIRST 10 ROWS ONLY")
6 df = cur.fetch_df() # pandas; or cur.fetch_arrow_table() for zero-copy
7 print(df)Db2 → GizmoSQL em Python
Os dois drivers são nativos de Arrow; o leitor Db2 alimenta diretamente a ingestão em massa do GizmoSQL. As linhas fluem da origem ao destino — sem armazenamento intermediário no cliente. Inverta as conexões para enviar no outro sentido.
O GizmoSQL é apenas um destino. Como o leitor é Apache Arrow padrão, o mesmo código transmite Db2 para qualquer destino compatível com ADBC — outro data warehouse, DuckDB, Postgres, SQLite ou outro banco. Uma interface, qualquer origem, qualquer destino.
1# Db2 → GizmoSQL, ADBC to ADBC — nothing materialised on the client
2import adbc_driver_db2.dbapi as db2
3import adbc_driver_gizmosql.dbapi as gizmosql
4
5with db2.connect(uri=db2_uri, username=db2_user, password=db2_pw) as src, \
6 gizmosql.connect(gizmosql_uri, username="token", password=token) as dst:
7 with src.cursor() as s, dst.cursor() as d:
8 s.execute("SELECT * FROM SALES.ORDERS")
9 rows = d.adbc_ingest(table_name="orders",
10 data=s.fetch_record_batch(), # streamed, not buffered
11 mode="replace")
12 dst.commit()
13 print(f"Loaded {rows:,} rows")Consulte Db2 em tempo real pelo DuckDB e GizmoSQL
Como o driver é uma biblioteca ADBC c-shared padrão, a extensão do DuckDB adbc_scanner — e o GizmoSQL, que incorpora DuckDB — pode executar ATTACH no Db2 e tanto lê-lo em tempo real (com projeções e filtros enviados à origem, combinando com dados locais) quanto gravar de volta com SQL simples (USE no esquema Db2 e depois CREATE TABLE … AS). As credenciais ficam em um segredo DuckDB autossuficiente:
-- From DuckDB or GizmoSQL (which embeds DuckDB) — query Db2 live, both ways
INSTALL adbc_scanner FROM community;
LOAD adbc_scanner;
-- credentials once, in a DuckDB secret
CREATE SECRET db2_secret (
TYPE adbc,
SCOPE 'db2://db2host:50000/SAMPLE',
driver 'db2', -- registered via: python -m adbc_driver_db2 install-manifest
uri 'db2://db2host:50000/SAMPLE',
username 'db2inst1',
password '********'
);
ATTACH 'db2://db2host:50000/SAMPLE' AS db2 (TYPE adbc);
-- READ: query Db2 live (projection + filter pushdown)
SELECT * FROM db2.SALES.ORDERS WHERE ORDER_DATE >= DATE '2024-01-01';
-- join Db2 with local data without copying it first
SELECT o.ORDER_ID, c.name
FROM db2.SALES.ORDERS o
JOIN customers c ON c.id = o.CUST_ID;
-- WRITE: push straight into Db2 with plain SQL
USE db2.SALES;
CREATE TABLE ORDERS_2024 AS SELECT * FROM memory.staged_orders;Prefere manter as credenciais fora do SQL? adbc_scanner também resolve perfis de conexão ADBC (profile://…), assim como a extensão da Columnar adbc .
Reimplementação independente. Esta é uma implementação Go independente, do zero, do protocolo DRDA — padrão aberto publicado pelo The Open Group — criada com referências sob licenças abertas. Não contém código-fonte da IBM nem vincula bibliotecas IBM. Não tem afiliação, endosso ou patrocínio da IBM Corporation. IBM e Db2 são marcas da International Business Machines Corporation.
Driver ADBC para Db2 — perguntas frequentes
O driver ADBC Db2 precisa do IBM CLI ou JCC?
Não. Implementa o protocolo de rede DRDA diretamente em Go e é instalado com um único comando pip — sem IBM Data Server Client, JAR JCC ou runtime nativo de driver.
Quais plataformas Db2 são compatíveis?
Db2 para Linux/UNIX/Windows (LUW) e Db2 for i, via DRDA. Trata tipos Db2 como DECIMAL, VARCHAR/VARGRAPHIC, TIMESTAMP, BOOLEAN e objetos grandes (BLOB/CLOB).
Como transfiro uma tabela Db2 para o GizmoSQL?
Abra as duas conexões e passe o leitor Arrow do cursor Db2 para adbc_ingest do GizmoSQL — as linhas fluem do Db2 para o GizmoSQL sem passar por um dataframe ou arquivo. Funciona também no sentido inverso.
Posso consultar Db2 pelo DuckDB ou GizmoSQL?
Sim. O driver é uma biblioteca ADBC c-shared padrão; a extensão adbc_scanner do DuckDB pode conectar Db2 com ATTACH e consultá-lo em tempo real, enviando projeções e filtros à origem — e gravar de volta com SQL simples (USE no esquema conectado e depois CREATE TABLE … AS). A extensão adbc da Columnar faz o mesmo por perfis de conexão. Como o GizmoSQL incorpora DuckDB, isso também funciona no servidor.
Este é um driver oficial da IBM?
Não. É uma reimplementação independente, do zero, do protocolo DRDA — padrão aberto publicado pelo The Open Group — criada com referências sob licenças abertas. Não tem afiliação, endosso ou patrocínio da IBM Corporation; IBM e Db2 são marcas da International Business Machines Corporation.