diff --git a/README.md b/README.md new file mode 100644 index 0000000..a9e1088 --- /dev/null +++ b/README.md @@ -0,0 +1,92 @@ +# go-migrate + +Migrador de datos entre SQL Server y PostgreSQL con procesamiento en paralelo. + +## Compilar + +```bash +go build -o go-migrate ./cmd/go_migrate +``` + +## Uso + +```bash +./go-migrate [opciones] [] +``` + +### Opciones + +| Flag | Descripción | +|------|-------------| +| `-config ` | Ruta al archivo de configuración YAML. También se puede pasar como argumento posicional. Si no se indica, se busca `config.yaml`. | +| `-validate` | Compara la cantidad de filas entre origen y destino por cada job. No migra datos. | +| `-dry-run` | Valida conexiones, acceso a storage (si aplica) y cuenta filas en origen sin migrar. | + +### Ejemplos + +```bash +# Migrar con config.yaml por defecto +./go-migrate + +# Usar un archivo de configuración específico +./go-migrate -config produccion.yaml + +# Validar que origen y destino tengan la misma cantidad de filas +./go-migrate -validate -config produccion.yaml + +# Verificar conectividad sin migrar +./go-migrate -dry-run -config produccion.yaml +``` + +## Configuración + +La herramienta lee credenciales y parámetros desde variables de entorno o un archivo `.env`. + +### Variables clave + +| Variable | Descripción | +|----------|-------------| +| `SOURCE_DB_URL` | URL de conexión a la base de datos origen (o `SOURCE_DB_HOST`, `SOURCE_DB_NAME`, `SOURCE_DB_USER`, `SOURCE_DB_PWD`). | +| `TARGET_DB_URL` | URL de conexión a la base de datos destino (o `TARGET_DB_HOST`, `TARGET_DB_NAME`, `TARGET_DB_USER`, `TARGET_DB_PWD`). | +| `LOG_LEVEL` | Nivel de log: `DEBUG`, `INFO`, `WARN`, `ERROR` (por defecto: `INFO`). | + +Para migrar datos binarios a Azure Blob, también se requieren `AZ_STORAGE_ENABLED`, `AZ_ACCOUNT_NAME`, `AZ_CONTAINER`, `AZ_ACCOUNT_KEY`. + +### Archivo de migración (YAML) + +Define los jobs de migración. Ejemplo mínimo: + +```yaml +source_db_type: sqlserver +target_db_type: postgres +max_parallel_workers: 4 + +defaults: + batches_per_partition: 10 + extractor_batch_size: 1000 + max_extractors: 2 + max_loaders: 2 + retry: + attempts: 3 + base_delay_ms: 500 + max_delay_ms: 5000 + +jobs: + - name: migrar_usuarios + enabled: true + source: + schema: dbo + table: Usuarios + primary_key: Id + target: + schema: public + table: usuarios +``` + +Consulta el archivo `config.yaml` de tu entorno para ver los jobs disponibles y sus parámetros específicos. + +## Modos de ejecución + +- **Migración** (por defecto): extrae, transforma y carga datos en paralelo. +- **Validación** (`-validate`): cuenta y compara filas entre origen y destino. +- **Dry run** (`-dry-run`): verifica conexiones y muestra la cantidad de filas en origen.