# 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.