Go puro · sem CLI/JCC · bidirecional

    O driver ADBC Db2

    Implementa diretamente o protocolo IBM DRDA — sem IBM CLI, sem JCC, apenas pip install. Mova dados entre Db2 e GizmoSQL nos dois sentidos — por Python ou DuckDB — transmitidos integralmente como Apache Arrow.

    $ pip install adbc-driver-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.

    PythonGoRustJavaC#C / C++JavaScriptRRubyKotlin
    Saiba mais sobre Apache Arrow ADBC

    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.

    Pronto para mover seus dados?

    Instale o GizmoSQL Core gratuitamente, instale por pip o driver Db2 e transmita sua primeira tabela em minutos.

    Agende uma demonstração!Agendamento via Calendly