- Drivers ADBC
- Oracle
O driver ADBC Oracle
Implementa diretamente o protocolo Oracle TNS/TTC; basta instalar um wheel. Mova dados entre Oracle e GizmoSQL nos dois sentidos — por Python ou DuckDB — com tipos preservados e tudo transmitido como Apache Arrow.
Sem Instant Client
Implementa o protocolo Oracle TNS/TTC nativo, escrito do zero em Go. Basta instalar o wheel Python — sem Instant Client, variáveis de ambiente ou pacotes nativos adicionais.
Bidirecional com GizmoSQL
Transmita uma tabela Oracle para o GizmoSQL ou envie dados de volta — em Python (ADBC para ADBC) ou inteiramente em SQL pelo DuckDB via adbc_scanner.
Tipos exatos, transmitidos por streaming
NUMBER mantém a precisão, TIMESTAMP preserva o fuso e os resultados seguem como lotes de registros Arrow — sem dataframe, etapa ODBC ou perda de precisão.
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, uma string de conexão. Sem Instant Client, sem LD_LIBRARY_PATH, sem dependências nativas.
1# pip install adbc-driver-oracle — no Oracle Instant Client required
2import adbc_driver_oracle.dbapi as oracle
3
4with oracle.connect(uri="oracle://scott:tiger@localhost:1521/FREEPDB1") as conn, \
5 conn.cursor() as cur:
6 cur.execute("SELECT order_id, amount FROM sales.orders WHERE ROWNUM <= 10")
7 for batch in cur.fetch_record_batch(): # streamed as Apache Arrow
8 print(batch)Oracle → GizmoSQL em Python
Como os dois drivers são nativos de Arrow, o leitor Oracle alimenta diretamente a ingestão em massa do GizmoSQL. As linhas fluem da origem ao destino — sem pandas, ODBC, Oracle Client ou 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 Oracle para qualquer destino compatível com ADBC — outro data warehouse, DuckDB, Postgres, SQLite ou outro banco. Uma interface, qualquer origem, qualquer destino.
1# Oracle → GizmoSQL, ADBC to ADBC — nothing materialised on the client
2import adbc_driver_oracle.dbapi as oracle
3import adbc_driver_gizmosql.dbapi as gizmosql
4
5with oracle.connect(uri=oracle_uri) 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 Oracle em tempo real pelo DuckDB e GizmoSQL
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 Oracle e tanto lê-lo em tempo real (com projeções e filtros enviados à origem) quanto gravar de volta com SQL simples (USE no esquema Oracle e depois CREATE TABLE … AS). As credenciais ficam em um segredo DuckDB autossuficiente:
-- From DuckDB or GizmoSQL (which embeds DuckDB) — read AND write Oracle live
INSTALL adbc_scanner FROM community;
LOAD adbc_scanner;
-- credentials once, in a DuckDB secret
CREATE SECRET ora_secret (
TYPE adbc,
SCOPE 'oracle://db.example.com:1521/PROD',
driver 'oracle', -- registered via: python -m adbc_driver_oracle install-manifest
uri 'oracle://db.example.com:1521/PROD',
username 'app',
password 's3cret'
);
ATTACH 'oracle://db.example.com:1521/PROD' AS ora (TYPE adbc);
-- READ: query Oracle live (projection + filter pushdown)
SELECT * FROM ora.SALES.ORDERS WHERE AMT > 100;
-- WRITE: push straight into Oracle with plain SQL
USE ora.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 de rede Oracle, criada com referências públicas sob licenças abertas. Não contém código-fonte da Oracle nem vincula bibliotecas Oracle. Não tem afiliação, endosso ou patrocínio da Oracle Corporation. Oracle e Oracle Database são marcas da Oracle Corporation.
Driver ADBC para Oracle — perguntas frequentes
O driver ADBC Oracle precisa do Oracle Instant Client?
Não. Implementa o protocolo de rede Oracle TNS/TTC diretamente em Go e é instalado com um único comando pip — sem Instant Client, bibliotecas de cliente ou preparação do ambiente.
Como transfiro uma tabela Oracle para o GizmoSQL?
Abra as duas conexões e passe o leitor Arrow do cursor Oracle para adbc_ingest do GizmoSQL — as linhas fluem do Oracle para o GizmoSQL sem passar por um dataframe ou arquivo. Funciona também no sentido inverso.
Posso consultar Oracle pelo DuckDB ou GizmoSQL?
Sim. O driver é uma biblioteca ADBC c-shared padrão; a extensão adbc_scanner do DuckDB pode conectar Oracle 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.
Quais versões e tipos Oracle são compatíveis?
Oracle Database 12.1+, incluindo 23ai, pelo protocolo nativo. Trata NUMBER, DATE/TIMESTAMP (com fuso e fuso local), INTERVAL, RAW, ROWID, LOBs, JSON (OSON), tipos de objeto, XMLType, SDO_GEOMETRY (para GeoArrow WKB) e Native Network Encryption.
Este é um driver oficial da Oracle?
Não. É uma reimplementação independente, do zero, do protocolo de rede Oracle, criada com referências públicas sob licenças abertas. Não tem afiliação, endosso ou patrocínio da Oracle Corporation; Oracle e Oracle Database são marcas da Oracle Corporation.