db-legacy-migration-agent
db-legacy-migration-companion
Inhaltsverzeichnis
Related MCP server: db-mcp
Überblick
Veraltete Unternehmenssysteme nutzen häufig herstellerspezifische SQL-Dialekte (Oracle PL/SQL, IBM DB2, Microsoft T-SQL), die ohne erheblichen manuellen Aufwand nicht direkt in moderne Software-Stacks migriert werden können. Dieses Tool automatisiert die strukturelle Übersetzung:
Eingabe | Ausgabe |
| Modelldefinitionen für |
PL/SQL | Best-Effort-TypeScript-Äquivalent |
Beliebige Mischung aus Legacy-DDL | TypeScript-Query-Helfer für den Prisma Client |
Vollständige DDL-Datei | Validierungsbericht mit Präzisionsverlust-Analyse |
Architektur
src/
├── parser/
│ └── sql-transpiler.ts # DDL lexer/parser + Prisma/TS code generator
├── engine/
│ └── schema-validator.ts # Precision-loss & semantic mismatch validator
├── mcp/
│ └── server.ts # MCP server (stdio transport)
└── cli.ts # Commander.js interactive CLI
tests/
└── transpiler.test.ts # Jest unit tests (40+ assertions)Kernmodule
src/transpiler/sql-transpiler.ts
Verantwortlich für die vollständige Transpilierungspipeline:
Tokenization – entfernt Kommentare, normalisiert Leerraum, behandelt Bezeichner in Anführungszeichen.
DDL-Parsing –
CREATE TABLEmit Spalten, Constraints, Fremdschlüsseln und Indizes.PL/SQL-Parsing –
CREATE [OR REPLACE] PROCEDURE/FUNCTIONmit Parameterrichtungen.Typzuordnung – 40+ Legacy-Typzuordnungen auf
{ prismaType, postgresType }.Prisma-Schema-Generierung –
@@map,@db.*-Annotationen, zusammengesetzte Primärschlüssel, FK-Beziehungen.TypeScript-Query-Generierung – CRUD-Helfer mit
PrismaClient.PL/SQL-Strukturübersetzung –
BEGIN/END,IF/THEN/ELSIF,FOR/WHILE LOOP,:=,DBMS_OUTPUT.
src/engine/schema-validator.ts
Führt eine Regel-Engine über die transpilierten Tabellendefinitionen aus und erzeugt strukturierte ValidationIssue-Datensätze:
Kritisch – Datenverlust garantiert (z. B.
BIGINT_OVERFLOW,NULLABLE_PK).Warnung – semantische Abweichung, die eine Überprüfung erfordert (z. B.
ORACLE_DATE_HAS_TIME,XMLTYPE_NO_NATIVE).Info – Informationen zur Nachvollziehbarkeit (z. B.
LOB_TO_TEXT,DB2_GRAPHIC_TYPE).
src/mcp/server.ts
MCP-Server, der drei Tools über stdio-Transport anbietet:
Tool | Beschreibung |
| Vollständiges Parsen + Generieren: gibt AST, Prisma-Schema und TS-Queries zurück |
| Gibt nur den Inhalt von |
| Gibt einen strukturierten oder als Text verfassten Validierungsbericht zurück |
Erste Schritte
Voraussetzungen
Node.js ≥ 18
npm ≥ 9
Installation
npm installAusführen des Builds
npm run buildCLI global verfügbar machen (optional)
npm link
db-migrate --helpCLI-Befehle
transpile <file>
Analysiert eine DDL-Datei und erzeugt schema.prisma, queries.ts und ast.json im Ausgabeverzeichnis.
npx ts-node src/cli.ts transpile ./examples/oracle_hr.sql \
--dialect oracle \
--out ./outputOptionen:
Flag | Default | Beschreibung |
|
| Quelldialekt: |
|
| Ausgabeverzeichnis |
| — | TypeScript-Query-Generierung überspringen |
| — | Validierung nach der Transpilierung überspringen |
validate <file>
Validiert die Typzuordnungen und erstellt einen strukturierten Bericht.
npx ts-node src/cli.ts validate ./examples/oracle_hr.sql \
--dialect oracle \
--format textOptionen:
Flag | Standard | Beschreibung |
|
| Quelldialekt |
|
|
|
| — | Exit-Code 1, wenn Warnungen gefunden werden (für CI-Pipelines) |
Exit-Codes:
Code | Bedeutung |
| Keine Probleme oder nur Informationen |
| Warnungen gefunden (nur mit |
| Kritische Probleme gefunden |
parse-inline <ddl>
Schnelltest – eine DDL-Zeichenfolge direkt aus der Befehlszeile parsen.
npx ts-node src/cli.ts parse-inline \
"CREATE TABLE T (ID NUMBER(10) NOT NULL, NAME VARCHAR2(100), CONSTRAINT PK_T PRIMARY KEY (ID));"mcp
Startet den MCP-Server über stdio (für KI-Assistenten-Integration).
npx ts-node src/cli.ts mcpMCP-Server
Der MCP-Server kann mit jedem MCP-kompatiblen KI-Assistenten (z. B. Claude Desktop, IBM watsonx Assistant) registriert werden.
Tool: Daemon
{
"tool": "parse_legacy_ddl",
"input": {
"ddl": "CREATE TABLE EMPLOYEES (...);",
"dialect": "oracle",
"include_typescript": true
}
}Rückgabe: vollständiger AST, Prisma-Schema, TypeScript-Query, Warnungen.
Tool: generate_prisma_schema
{
"tool": "generate_prisma_schema",
"input": {
"ddl": "CREATE TABLE EMPLOYEES (...);",
"dialect": "oracle"
}
}Rückgabe: Inhalt von schema.prisma als einfacher String.
Tool: validate_type_mapping
{
"tool": "validate_type_mapping",
"input": {
"ddl": "CREATE TABLE EMPLOYEES (...);",
"dialect": "oracle",
"format": "json"
}
}Rückgabe: strukturiertes ValidationReport-JSON oder Menschenlesbarer Text.
Typzuordnungsreferenz
Legacy-Typ | Prisma-Typ | PostgreSQL-Typ | Anmerkungen |
|
|
| Genauigkeit bleiben erhalten |
|
|
| Skalierung bleibt erhalten |
|
|
| Passt in 32 Bit |
|
|
| Passt in 64 Bit |
|
|
| ⚠ BigInt würde überlaufen |
|
|
| |
|
|
| Array-Fester Länge (Padding) |
|
|
| ℹ Kein separates LOB-Segment |
|
|
| ℹ Inline-Speicherung |
|
|
| ⚠ Oracle DATE enthält Uhrzeit |
|
|
| |
|
|
| |
|
|
| ⚠ Einfache Präzision |
|
|
| |
|
|
| ⚠ Kein natives Prisma-XML |
|
|
| |
|
|
| |
|
|
| |
|
|
|
Validierungsregeln
Code | Schweregrad | Auslöser | Empfehlung |
| warning |
| Explizite Skalierung angeben |
| critical |
|
|
| warning |
|
|
| info |
| LOB-Streaming-APIs aktualisieren |
| info |
| Für Werte > 1 GB die |
| warning | Oracle |
|
| warning |
| Zeitzonen-Konvertierungslogik prüfen |
| warning |
| Durch |
| info |
| Für unbegrenzte Länge |
| warning |
| Für XML-Operationen |
| info | DB2 | UTF-8-/Unicode-Kodierung prüfen |
| warning | Tabelle hat keinen Primärschlüssel |
|
| critical | Primärschlüsselspalte als nullable analysiert | Quell-DDL korrigieren |
Projektstruktur
db-legacy-migration-agent/
├── src/
│ ├── parser/
│ │ └── sql-transpiler.ts # Type mappings, DDL parser, Prisma & TS generators
│ ├── engine/
│ │ └── schema-validator.ts # Rule engine, ValidationReport, formatter
│ ├── mcp/
│ │ └── server.ts # MCP server with 3 tools
│ └── cli.ts # Commander.js CLI entrypoint
├── tests/
│ └── transpiler.test.ts # Jest unit tests
├── dist/ # Compiled output (after `npm run build`)
├── output/ # Generated files (schema.prisma, queries.ts, ast.json)
├── package.json
├── tsconfig.json
└── README.mdTests ausführen
# Run all tests
npm test
# With coverage
npm test -- --coverage
# Watch mode
npm test -- --watchErwartete Ausgabe: 40+ Aussagen zu Transpiler-Parsing, Typzuordnung, PL/SQL-Übersetzung und Validatorregeln.
Mitwirken
Repository öffnen und lokal klonen.
npm installausführen, um Abhängigkeiten zu installieren.Feature or Bugfix in
src/hinzufügen.Tests in
tests/ergänzen oder aktualisieren.Vor dem PR
npm testundnpm run typecheckausführen.
Lizenz
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Text-to-SQL MCP server: read-only queries on PostgreSQL, MySQL and SQL Server with your real schema
- SupabaseOAuthcom.supabase
MCP server for interacting with the Supabase platform
Hosted PostgreSQL MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Hosted SQL Server MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn extensible MCP server for database operations that supports PostgreSQL for managing schemas, tables, data, and user permissions. It features automatic migration recording for DDL changes and integrates with various AI-powered editors like Cursor, Zed, and Claude Code.15 npm2MIT
- AlicenseAqualityCmaintenanceA lightweight MCP server for relational databases, enabling dynamic connections to PostgreSQL and MySQL, SQL execution, and transaction control.7101 npm1MIT
- AlicenseAqualityDmaintenanceMCP server that analyzes TypeScript/Prisma projects, builds dependency graphs, and protects against dangerous modifications and silent regressions.1601MIT
- AlicenseAqualityCmaintenanceMCP server that reads your database schema from SQL DDL, Prisma, Drizzle, TypeORM, or SQLAlchemy, generates a Mermaid ER diagram, and writes it into your documentation, with drift detection to keep diagrams up-to-date.51MIT