{"id":47115292,"url":"https://github.com/dominion525/jetdb","last_synced_at":"2026-03-12T18:54:14.317Z","repository":{"id":338807623,"uuid":"1156807799","full_name":"dominion525/jetdb","owner":"dominion525","description":"A pure Rust library for reading Microsoft Access databases (.mdb/.accdb)","archived":false,"fork":false,"pushed_at":"2026-03-11T06:55:56.000Z","size":13786,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-11T12:58:43.631Z","etag":null,"topics":["accdb","cli","database","mdb","microsoft-access","rust"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dominion525.png","metadata":{"files":{"readme":"README.ja.md","changelog":"CHANGELOG.ja.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-13T04:27:34.000Z","updated_at":"2026-03-11T06:55:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dominion525/jetdb","commit_stats":null,"previous_names":["dominion525/jetdb"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/dominion525/jetdb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dominion525%2Fjetdb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dominion525%2Fjetdb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dominion525%2Fjetdb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dominion525%2Fjetdb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dominion525","download_url":"https://codeload.github.com/dominion525/jetdb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dominion525%2Fjetdb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30438819,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T14:34:45.044Z","status":"ssl_error","status_checked_at":"2026-03-12T14:09:33.793Z","response_time":114,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["accdb","cli","database","mdb","microsoft-access","rust"],"created_at":"2026-03-12T18:54:10.767Z","updated_at":"2026-03-12T18:54:14.305Z","avatar_url":"https://github.com/dominion525.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jetdb\n\n[![CI](https://github.com/dominion525/jetdb/actions/workflows/ci.yml/badge.svg)](https://github.com/dominion525/jetdb/actions/workflows/ci.yml)\n[![License: MIT OR Apache-2.0](https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blue)](LICENSE-MIT)\n[![MSRV: 1.85](https://img.shields.io/badge/MSRV-1.85-orange)](https://blog.rust-lang.org/2025/02/20/Rust-1.85.0.html)\n[![Crates.io](https://img.shields.io/crates/v/jetdb)](https://crates.io/crates/jetdb)\n[![docs.rs](https://img.shields.io/docsrs/jetdb)](https://docs.rs/jetdb)\n\n[English](README.md)\n\nMicrosoft Access のデータベースファイル (.mdb / .accdb) を Rust から直接読み取れるライブラリと CLI ツールです。\n\npure Rust で書かれているので C/C++ のインストールや FFI は不要で、macOS・Windows・Linux のどれでもそのまま動きます。Access 97 (Jet3) から Access 2019 (ACE17) まで幅広く対応しています。\n\n## インストール\n\n### CLI ツール\n\n```bash\ncargo install jetdb-cli\n```\n\n### ライブラリとして使う\n\n```toml\n[dependencies]\njetdb = \"0.2\"\n```\n\n## CLI の使い方\n\n```bash\n# パスワード保護された .accdb ファイルを開く\njetdb --password secret tables protected.accdb\n\n# データベースのエンジンバージョンを表示する\njetdb ver database.mdb\n\n# テーブルの一覧を表示する\njetdb tables database.mdb\n\n# テーブルのスキーマ（カラム、インデックス、リレーションシップ）を表示する\njetdb schema database.mdb\njetdb schema database.mdb -T Table1\n\n# DDL を生成する（SQLite / PostgreSQL / MySQL / Access）\njetdb schema database.mdb --ddl sqlite\n\n# テーブルのデータを CSV で出力する\njetdb export database.mdb Table1\n\n# 保存済みクエリの一覧を表示する・SQL を確認する\njetdb queries list database.mdb\njetdb queries show database.mdb SelectQuery\n\n# VBA モジュールの一覧を表示する・ソースコードを確認する\njetdb vba list database.mdb\njetdb vba show database.mdb Module1\n\n# オブジェクトプロパティを表示する\njetdb prop database.mdb Table1\n```\n\n詳しいオプションや出力例は [docs/cli.ja.md](docs/cli.ja.md) にまとめてあります。\n\n## ライブラリの使い方\n\n```rust\nuse jetdb::{PageReader, read_catalog, read_table_def, read_table_rows};\n\nfn main() -\u003e Result\u003c(), jetdb::FileError\u003e {\n    let mut reader = PageReader::open(\"database.mdb\")?;\n\n    // テーブル一覧を取得する\n    let catalog = read_catalog(\u0026mut reader)?;\n    for entry in \u0026catalog {\n        println!(\"{}\", entry.name);\n    }\n\n    // テーブル定義を読み取る\n    let entry = \u0026catalog[0];\n    let table_def = read_table_def(\u0026mut reader, \u0026entry.name, entry.table_page)?;\n\n    // 行データを読み取る\n    let result = read_table_rows(\u0026mut reader, \u0026table_def)?;\n    for row in \u0026result.rows {\n        println!(\"{:?}\", row);\n    }\n\n    Ok(())\n}\n```\n\n詳しい API ドキュメントやコード例は `cargo doc --open` で確認できます。[docs.rs/jetdb](https://docs.rs/jetdb) でも閲覧できます。\n\n## 対応バージョン\n\n| エンジン | Access バージョン | ファイル形式 |\n|---------|-----------------|-------------|\n| Jet3    | Access 97       | .mdb        |\n| Jet4    | Access 2000/2003 | .mdb       |\n| ACE12   | Access 2007     | .accdb      |\n| ACE14   | Access 2010     | .accdb      |\n| ACE15   | Access 2013     | .accdb      |\n| ACE16   | Access 2016     | .accdb      |\n| ACE17   | Access 2019     | .accdb      |\n\n## できること\n\n- テーブルの一覧や定義（カラム、インデックス、リレーションシップ）の読み取り\n- 行データの読み取りと Rust の型への変換（Text, Long, Double, Timestamp, Money, Memo, OLE, GUID など）\n- SQLite・PostgreSQL・MySQL・Access SQL 向けの DDL 生成\n- 保存済みクエリからの SQL 復元\n- VBA モジュールのソースコード抽出\n- オブジェクトプロパティ（LvProp）の読み取り\n- RC4 暗号化データベースの復号、およびパスワード保護された .accdb ファイルの復号 (Agile, RC4 CryptoAPI, Standard/NonStandard AES)\n- Jet3 (Latin-1) / Jet4 以降 (UTF-16LE、圧縮テキスト) のエンコーディング処理\n\n## 制限事項\n\n- 読み取り専用（書き込みには対応していない）\n- インデックスを使った検索は非対応（順次スキャンのみ）\n- テーブルの全行をメモリに読み込むため、行数が非常に多いテーブルではメモリ使用量に注意\n- パスワード保護された .accdb ファイルは `PageReader::open_with_password` が必要 (Agile, RC4 CryptoAPI, Standard/NonStandard AES)\n- レプリケーションデータベース (.mda) は未テスト\n\n## AI エージェント連携\n\nClaude Code などの AI エージェントにスキルとして登録できます:\n\n```bash\nmkdir -p ~/.claude/skills/jetdb-cli \u0026\u0026 jetdb --help-skill \u003e ~/.claude/skills/jetdb-cli/SKILL.md\n```\n\n## 謝辞\n\n- MDB/ACCDB ファイルフォーマットの理解にあたって [mdbtools](https://github.com/mdbtools/mdbtools) の [HACKING.md](https://github.com/mdbtools/mdbtools/blob/dev/HACKING.md) を大いに参考にしました\n- テスト用の .mdb / .accdb ファイルは大部分を [Jackcess](https://github.com/spannm/jackcess)（Apache License 2.0）から利用しています（一部は本プロジェクトで独自に作成）。詳細は [testdata/SOURCES.md](testdata/SOURCES.md) を参照\n- 暗号化関連のテストファイルは [jackcessencrypt](https://github.com/jahlborn/jackcessencrypt)（Apache License 2.0、Jackcess の暗号化プラグイン）から利用しています\n- 暗号化の実装にあたり [MS-OFFCRYPTO](https://learn.microsoft.com/en-us/openspecs/office_file_formats/ms-offcrypto/)（Microsoft の Office ドキュメント暗号化仕様）を参考にしました\n\n## ライセンス\n\nMIT OR Apache-2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdominion525%2Fjetdb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdominion525%2Fjetdb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdominion525%2Fjetdb/lists"}