Taywee /
args
A header-only C++ argument parser library. Supposed to be flexible and powerful, and attempts to be compatible with the functionality of the Python standard argparse library (though not necessarily the API).
91/100 healthLoading repository data…
alamaby / repository
A powerful CLI tool that automatically generates comprehensive data dictionary documentation from Oracle 19c databases. Built with .NET 8 and C#, this tool bridges the gap between database schemas and developer-friendly documentation.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
A powerful CLI tool that automatically generates comprehensive data dictionary documentation from Oracle 19c databases. Built with .NET 10 and C#, this tool bridges the gap between database schemas and developer-friendly documentation.
In the Software Development Life Cycle (SDLC), maintaining accurate and up-to-date database documentation is critical:
DATA_DICTIONARY.md across the team.envOracle.ManagedDataAccess.Core)Clone or download this repository
git clone <repository-url>
cd OracleToMarkdown
Restore NuGet packages
dotnet restore
Build the project
dotnet build --configuration Release
.env FileCopy the example configuration
cp .env.example .env
Edit .env with your Oracle database credentials
# Oracle Database Connection Configuration
ORACLE_HOST=localhost
ORACLE_PORT=1521
ORACLE_SERVICE_NAME=ORCL
ORACLE_USER_ID=your_username
ORACLE_PASSWORD=your_password
Configuration Parameters:
| Variable | Description | Example |
|---|---|---|
ORACLE_HOST | Database server hostname | db.example.com |
ORACLE_PORT | Oracle listener port (default: 1521) | 1521 |
ORACLE_SERVICE_NAME | Oracle service name or SID | ORCLPDB1 |
ORACLE_USER_ID | Database user with SELECT access | SCHEMA_OWNER |
ORACLE_PASSWORD | Database user password | MySecurePass123! |
⚠️ Security Warning: Never commit .env to version control! The .gitignore file is pre-configured to exclude it.
Run the tool from the command line:
dotnet run
Or execute the compiled binary:
dotnet run --project OracleToMarkdown/OracleToMarkdown.csproj
The tool will:
.envDATA_DICTIONARY_{SCHEMA}_{YYYYMMDD_HHMM}.md with:
Output File Naming:
DATA_DICTIONARY_{SCHEMA}_{YYYYMMDD_HHMM}.mdDATA_DICTIONARY_HR_20260408_1430.mdORACLE_SCHEMA is not set in .env, the tool will auto-detect from database or fallback to ORACLE_USER_IDAfter successful execution, you'll find a file like DATA_DICTIONARY_HR_20260408_1430.md in the project root:
# Data Dictionary
> **Generated:** 2026-04-08 14:30:00
## Summary
- **Total Tables:** 5
- **Total Columns:** 47
- **Tables with Foreign Keys:** 4
## Entity Relationship Diagram
```mermaid
erDiagram
USERS {
NUMBER USER_ID PK
VARCHAR2(100) USERNAME
...
}
ORDERS }o--|| USERS : "USER_ID"
System users and authentication
Metadata:
USER_ID| # | Column Name | Data Type | Nullable | Constraint | Description |
|---|---|---|---|---|---|
| 1 | USER_ID | NUMBER(10) | ✗ | 🔑 PK | Unique user identifier |
| 2 | USERNAME | VARCHAR2(100) | ✗ | — | Login username |
| ... |
---
## 🏗️ Architecture
This project follows clean architecture principles:
OracleToMarkdown/ ├── Config/ │ └── DatabaseConfig.cs # Strongly typed configuration ├── Models/ │ ├── ColumnSchema.cs # Column metadata model │ └── TableSchema.cs # Table metadata model ├── Services/ │ ├── OracleService.cs # Database access and metadata extraction │ └── MarkdownGeneratorService.cs # Markdown documentation generation ├── Program.cs # Application entry point ├── .env.example # Configuration template └── OracleToMarkdown.csproj # Project file with dependencies
### Design Patterns Used
- **Service Pattern**: Separation of concerns between data access (`OracleService`) and output generation (`MarkdownGeneratorService`)
- **Dependency Injection**: Clean service instantiation in `Program.cs`
- **Strongly Typed Models**: `TableSchema` and `ColumnSchema` for type safety
- **Factory Pattern**: Static configuration loading with validation
---
## 📚 Dependencies
| Package | Version | Purpose |
|---------|---------|---------|
| [DotNetEnv](https://github.com/tonerdo/dotnet-env) | 3.0.0 | `.env` file loading and parsing |
| [Oracle.ManagedDataAccess.Core](https://www.nuget.org/packages/Oracle.ManagedDataAccess.Core) | 23.4.0 | Oracle database connectivity (fully managed, no Oracle client required) |
---
## 🔧 Troubleshooting
### Common Issues
**1. "Configuration file '.env' not found"**
- **Solution**: Copy `.env.example` to `.env` and fill in your credentials
**2. "Oracle Database Error: ORA-01017: invalid username/password"**
- **Solution**: Verify your `ORACLE_USER_ID` and `ORACLE_PASSWORD` in `.env`
**3. "Oracle Database Error: ORA-12541: TNS:no listener"**
- **Solution**: Check `ORACLE_HOST`, `ORACLE_PORT`, and ensure Oracle is running
**4. "ORA-12154: TNS:could not resolve the connect identifier"**
- **Solution**: Verify `ORACLE_SERVICE_NAME` matches your Oracle configuration
**5. Build fails with missing package errors**
- **Solution**: Run `dotnet restore` to download NuGet packages
### Getting Help
If you encounter issues not covered here:
1. Check the error message details
2. Verify your `.env` configuration
3. Test database connectivity with SQL Developer or similar tool
4. Open an issue with error details (remove sensitive info first!)
---
## 🧪 Development
### Adding New Features
```bash
# Watch mode for auto-rebuild during development
dotnet watch run
# Build in debug mode
dotnet build
# Run tests (when added)
dotnet test
The codebase follows these principles:
using statementsThis project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Whether it's:
Please feel free to submit a Pull Request!
Built with ❤️ for System Analysts and developers who value good documentation.
GitHub: alamaby
See any generated DATA_DICTIONARY_*.md file (generated after running against your database) for a complete example of the generated documentation.
Happy documenting! 📚✨
Selected from shared topics, language and repository description—not editorial ratings.
Taywee /
A header-only C++ argument parser library. Supposed to be flexible and powerful, and attempts to be compatible with the functionality of the Python standard argparse library (though not necessarily the API).
91/100 healthZibri /
A powerful, portable, and feature-rich command-line client for the Google Gemini API, written in C. Supports interactive chat, scripting, file attachments, and session management with no external runtime dependencies.
48/100 healthKonvt /
A powerful and high-performance terminal progress bar for Modern C++.
gershnik /
Fully-featured, powerful, command line argument parser in C++20
76/100 healthDev-Art-Solutions /
.NET client library for Ollama - your gateway to seamless integration with the powerful Ollama APIs. This library provides developers with a straightforward way to interact with Ollama APIs, enabling rapid development of robust applications in C#.
65/100 healthFynnius /
A powerful C# library for creating custom stock screeners using TradingView's API. Retrieve market data for stocks, crypto, and forex without web scraping. Features comprehensive filtering, sorting, and a CLI tool for quick market analysis.
76/100 health