Sobre o projeto
jetdb é uma biblioteca e ferramenta de linha de comando em Rust puro para ler arquivos de banco de dados do Microsoft Access (.mdb e .accdb). Não possui dependências C/C++ ou FFI, tornando-o portátil entre macOS, Windows, Linux e até WebAssembly (incluindo alvos de navegador). Suporta Access 97 (Jet3) até Access 2019 (ACE17).
## Instalação
- **Ferramenta CLI**: `cargo install jetdb-cli`
- **Biblioteca**: Adicione `jetdb = "0.2"` ao seu Cargo.toml.
## Exemplos de Uso da CLI
- `jetdb --password secret tables protected.accdb` – abrir um arquivo protegido por senha
- `jetdb ver database.mdb` – mostrar a versão do mecanismo do banco de dados
- `jetdb tables database.mdb` – listar tabelas
- `jetdb schema database.mdb` – mostrar esquema de tabelas (colunas, índices, relacionamentos)
- `jetdb schema database.mdb --ddl sqlite` – gerar DDL para SQLite, PostgreSQL, MySQL ou Access
- `jetdb export database.mdb Table1` – exportar dados de tabela como CSV
- `jetdb queries list database.mdb` – listar consultas salvas
- `jetdb queries show database.mdb SelectQuery` – mostrar SQL de uma consulta salva
- `jetdb vba list database.mdb` – listar módulos VBA
- `jetdb vba show database.mdb Module1` – mostrar código-fonte VBA
- `jetdb macro list database.accdb` – listar macros nomeadas
- `jetdb macro show database.accdb AutoExec` – mostrar uma macro como texto
- `jetdb prop database.mdb Table1` – mostrar propriedades de objeto
## Uso da Biblioteca
```rust
use jetdb::{PageReader, read_catalog, read_table_def, read_table_rows};
fn main() -> Result<(), jetdb::FileError> {
let mut reader = PageReader::open("database.mdb")?;
let catalog = read_catalog(&mut reader)?;
for entry in &catalog {
println!("{}", entry.name);
}
let entry = &catalog[0];
let table_def = read_table_def(&mut reader, &entry.name, entry.table_page)?;
let result = read_table_rows(&mut reader, &table_def)?;
for row in &result.rows {
println!("{:?}", row);
}
Ok(())
}
```
## Versões Suportadas
| Mecanismo | Versão do Access | Formato de Arquivo |
|--------|---------------|-------------|
| Jet3 | Access 97 | .mdb |
| Jet4 | Access 2000/2003 | .mdb |
| ACE12 | Access 2007 | .accdb |
| ACE14 | Access 2010 | .accdb |
| ACE15 | Access 2013 | .accdb |
| ACE16 | Access 2016 | .accdb |
| ACE17 | Access 2019 | .accdb |
## Recursos
- Ler metadados de tabelas (colunas, índices, relacionamentos)
- Ler dados de linhas com mapeamento de tipos Rust (Text, Long, Double, Timestamp, Money, Memo, OLE, GUID, etc.)
- Gerar DDL para SQLite, PostgreSQL, MySQL e SQL do Access
- Recuperar SQL de consultas salvas
- Extrair código-fonte de módulos VBA
- Ler propriedades de objeto (LvProp)
- Descriptografar bancos de dados criptografados com RC4 e arquivos .accdb protegidos por senha (Agile, RC4 CryptoAPI, AES Padrão/Não Padrão)
- Lidar com codificações Jet3 (Latin-1) e Jet4+ (UTF-16LE, texto compactado)
- Executar em WebAssembly, incluindo o alvo de navegador (`wasm32-unknown-unknown`), abrindo um banco de dados a partir de bytes na memória com `PageReader::open_reader`
## Limitações
- Somente leitura (sem suporte a escrita)
- Sem buscas baseadas em índice (apenas varredura completa de tabela)
- Carrega todas as linhas na memória; esteja ciente do uso de memória com tabelas muito grandes
- Arquivos .accdb protegidos por senha exigem `PageReader::open_with_password` (Agile, RC4 CryptoAPI, AES Padrão/Não Padrão)
- Bancos de dados de replicação (.mda) não testados
## Integração com Agentes de IA
Disponível como uma Skill do Claude Code via repositório [agent-skills](https://github.com/dominion525/agent-skills). Instale via Mercado de Plugins do Claude Code:
```
/plugin marketplace add dominion525/agent-skills
/plugin install jetdb-cli@dominion525-skills
```
Ou via CLI de skills da Vercel:
```bash
npx skills add dominion525/agent-skills --skill jetdb-cli -a claude-code
```
## Agradecimentos
- [mdbtools](https://github.com/mdbtools/mdbtools) – HACKING.md foi uma referência inestimável para entender o formato de arquivo MDB/ACCDB
- [Jackcess](https://github.com/spannm/jackcess) (Licença Apache 2.0) – a maioria dos arquivos de teste .mdb/.accdb é proveniente deste projeto
- [jackcessencrypt](https://github.com/jahlborn/jackcessencrypt) (Licença Apache 2.0) – arquivos de teste relacionados a criptografia
- [MS-OFFCRYPTO](https://learn.microsoft.com/en-us/openspecs/office_file_formats/ms-offcrypto/) – especificação da Microsoft para criptografia de documentos do Office
## Licença
MIT OU Apache-2.0
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.