Saltar a contenido

tai-sql feed

tai-sql feed [-s <schema>] [-t <tabla>] [--clean] [-d] [-f] [--continue-on-error] [-v]

Ejecuta los métodos feed() de las tablas, en orden topológico por claves foráneas y en una sola transacción: si falla una tabla, no queda aplicada ninguna.

tai-sql feed --dry-run     # qué insertaría
tai-sql feed
tai-sql feed -t rol        # solo esa tabla

Las opciones

Opción Qué hace
-t, --table Alimenta solo esa tabla
--clean Vacía las tablas antes de alimentarlas, con la sentencia de cada motor
-d, --dry-run Muestra qué se insertaría sin ejecutar
-f, --force Ejecuta aunque haya cambios pendientes o tablas sin clave de conflicto
--continue-on-error Sigue con las demás tablas si una falla, en vez de deshacer el feed
-v, --verbose Detalle de cada paso

--clean borra más de lo que parece

Vacía las tablas indicadas y las que dependan de ellas. No es «volver al estado inicial»: es borrar datos.

Idempotencia: la clave natural

El feed hace upsert usando la clave natural de la tabla, que es una unique_constraint.

Una tabla sin ninguna, con clave primaria autoincremental, no tiene clave de conflicto: cada ejecución insertaría las mismas filas otra vez. El plan lo decide antes de ejecutar y, si alguna tabla no tiene identidad, corta con un error que dice cómo dársela.

class Rol(Table):
    __tablename__ = 'rol'
    __constraints__ = unique_constraint('nombre', 'tenant_id')   # ← esto

--force salta esa comprobación. Es lo que quieres en una tabla de log, y lo que no quieres en ninguna otra.

Qué no hace

  • No codifica vectores: una columna vectorial con encoder y sin valor es un error con su solución. Codificar es trabajo del cliente generado, en runtime.
  • No ejecuta los triggers del cliente generado: el feed inserta contra la base de datos.

Dentro de un push

tai-sql push --with-feed

Ejecuta el feed entre la creación de las tablas y la aplicación de las claves foráneas. Sirve cuando los datos iniciales son necesarios para que las FKs se puedan aplicar sin filas huérfanas.