{"id":35142386,"url":"https://github.com/akr0n/dbmigrator","last_synced_at":"2026-05-23T14:01:11.368Z","repository":{"id":326516260,"uuid":"1105809190","full_name":"Akr0n/dbmigrator","owner":"Akr0n","description":"Database migration tool","archived":false,"fork":false,"pushed_at":"2026-05-23T08:11:09.000Z","size":574,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-23T09:28:22.808Z","etag":null,"topics":["dbms","migration","tool"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Akr0n.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":null,"dco":null,"cla":null}},"created_at":"2025-11-28T07:32:48.000Z","updated_at":"2026-04-23T22:16:50.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Akr0n/dbmigrator","commit_stats":null,"previous_names":["akr0n/dbmigrator"],"tags_count":72,"template":false,"template_full_name":null,"purl":"pkg:github/Akr0n/dbmigrator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akr0n%2Fdbmigrator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akr0n%2Fdbmigrator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akr0n%2Fdbmigrator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akr0n%2Fdbmigrator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Akr0n","download_url":"https://codeload.github.com/Akr0n/dbmigrator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akr0n%2Fdbmigrator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33398391,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T04:15:53.637Z","status":"ssl_error","status_checked_at":"2026-05-23T04:15:53.242Z","response_time":53,"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":["dbms","migration","tool"],"created_at":"2025-12-28T12:05:57.405Z","updated_at":"2026-05-23T14:01:11.300Z","avatar_url":"https://github.com/Akr0n.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Database Migrator\n\nA Windows tool for migrating data between relational databases (SQL Server, Oracle, PostgreSQL).\n\n## Features\n\n- 🔄 Cross-database data migration\n- 🗄️ Support for SQL Server, Oracle, PostgreSQL\n- 🎨 Modern graphical interface (Avalonia UI)\n- 📊 Selective table selection with search/filter\n- 🔧 Automatic data type mapping\n- 🔑 Primary Key and UNIQUE constraint migration\n- 📈 Real-time progress bar\n- 🚀 Automatic target database creation\n- 💾 Single-file executable (.exe)\n- 📁 Save/Load connection configurations\n- 🔀 Three migration modes: Schema+Data, Schema Only, Data Only\n- ↩️ Automatic rollback on failure (Schema+Data mode)\n\n## Requirements\n\n- Windows 10/11 (64-bit)\n- .NET 10.0 Runtime (included in standalone exe)\n\n## Installation\n\n### Method 1: Standalone Executable (Recommended)\n1. Download `DatabaseMigrator.exe` from Releases\n2. Run the executable directly\n\n### Method 2: Build from Source\n\n#### Build Prerequisites:\n- .NET 10.0 SDK\n- PowerShell 7+ (Windows)\n\n#### Build and Publish:\n\n**PowerShell:**\n```powershell\n# Build and publish for Windows x64\n.\\publish.ps1\n\n# The executable will be in: .\\release\\DatabaseMigrator.exe\n```\n\n**Batch/CMD:**\n```cmd\nREM Build and publish for Windows x64\npublish.bat\n\nREM The executable will be in: .\\release\\DatabaseMigrator.exe\n```\n\n**Manual with dotnet CLI:**\n```bash\ndotnet publish src/DatabaseMigrator/DatabaseMigrator.csproj \\\n    -c Release \\\n    -r win-x64 \\\n    --self-contained \\\n    -p:PublishSingleFile=true\n```\n\n## Usage\n\n### Step 1: Connect to Databases\n1. Launch the application\n2. In the \"Database Connections\" tab:\n   - **Source Database**: Enter connection details for the source DB\n   - **Target Database**: Enter connection details for the target DB\n3. Click \"Connect to Databases\"\n\n### Step 2: Select Tables\n1. Select the tables to migrate in the \"Table Selection\" tab\n2. Use the search box to filter tables by name\n3. Use \"Select All\" and \"Deselect All\" buttons for quick management\n4. Row counts are loaded automatically\n\n### Step 3: Choose Migration Mode\nSelect one of three migration modes:\n- **Schema + Data**: Creates tables and migrates data (with automatic rollback on failure)\n- **Schema Only**: Creates only the table structure without data\n- **Data Only**: Migrates data only (tables must already exist in target)\n\n### Step 4: Start Migration\n1. Go to the \"Migration\" tab\n2. Review the status information\n3. Click \"Start Migration\"\n4. Monitor progress with the progress bar\n5. The target database will be created automatically if it doesn't exist\n\n## Connection Configuration\n\n### SQL Server\n- **Type**: SqlServer\n- **Server**: Server name or IP\n- **Port**: 1433 (default)\n- **Database**: Database name\n- **Username**: sa or SQL user (leave empty for Windows Auth)\n- **Password**: Account password\n\n### Oracle\n- **Type**: Oracle\n- **Server**: TNS name or IP\n- **Port**: 1521 (default)\n- **Database**: SID or service name (e.g., FREEPDB1, XE, ORCL)\n- **Username**: Oracle user\n- **Password**: Account password\n\n### PostgreSQL\n- **Type**: PostgreSQL\n- **Server**: Server name or IP\n- **Port**: 5432 (default)\n- **Database**: Database name\n- **Username**: postgres or other user\n- **Password**: Account password\n\n## Save/Load Configurations\n\nThe application supports saving and loading connection configurations:\n\n- **Save**: File → Save Configuration (or Ctrl+S)\n- **Load**: File → Load Configuration (or Ctrl+O)\n\nConfigurations are saved as JSON files and include both source and target connection settings.\nPasswords are protected with Windows DPAPI (`passwordProtected: true`) by default.\n\n## Runtime Settings\n\nRuntime settings can be configured with:\n\n- `src/DatabaseMigrator/appsettings.json` (copied to output/publish)\n- environment variables (override file settings), for example:\n  - `DBMIGRATOR_BATCH_SIZE`\n  - `DBMIGRATOR_COMMAND_TIMEOUT_SECONDS`\n  - `DBMIGRATOR_RETRY_COUNT`\n  - `DBMIGRATOR_LOG_MAX_FILE_MB`\n  - `DBMIGRATOR_TRUST_SERVER_CERTIFICATE`\n\n## Data Type Mapping\n\nThe application automatically maps data types between different database systems:\n\n| SQL Server | PostgreSQL | Oracle |\n|------------|------------|--------|\n| int | integer | NUMBER(10) |\n| bigint | bigint | NUMBER(19) |\n| varchar(n) | varchar(n) | VARCHAR2(n) |\n| nvarchar(n) | varchar(n) | NVARCHAR2(n) |\n| varchar(max) | text | CLOB |\n| nvarchar(max) | text | NCLOB |\n| datetime2 | timestamp | TIMESTAMP(6) |\n| bit | boolean | NUMBER(1) |\n| text | text | CLOB |\n| varbinary | bytea | BLOB |\n| uniqueidentifier | uuid | RAW(16) |\n\n## Error Handling\n\n- **Connection failures**: Clear error messages with troubleshooting hints\n- **Schema creation errors**: Detailed logging of DDL operations\n- **Constraint migration**: Primary Keys and UNIQUE constraints are automatically recreated\n- **Data migration errors**: Automatic rollback of created tables (in Schema+Data mode)\n- **Validation**: Data-only mode validates table existence before starting\n\n## Logging\n\nThe application logs all operations to help with troubleshooting:\n- Connection attempts and results\n- Table discovery and row counts\n- Schema DDL generation\n- Data migration progress\n- Error details with stack traces\n\nLog files are automatically rotated and retained according to runtime settings.\n\n## E2E Matrix\n\nCross-database E2E matrix automation is available via:\n\n```powershell\n.\\scripts\\run-e2e-matrix.ps1\n```\n\nSee `DOCKER_E2E_TESTING.md` for prerequisites and details.\n\n## License\n\nMIT License - See LICENSE file for details.\n\n## Contributing\n\nContributions are welcome! Please read the ARCHITECTURE.md file to understand the codebase structure.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakr0n%2Fdbmigrator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakr0n%2Fdbmigrator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakr0n%2Fdbmigrator/lists"}