crear tablas para migrar CREATE TABLE PRESUPUESTOSVIEJOS ( CODIGOEMPRESA CODIGOSEMPRESAS NOT NULL /* CODIGOSEMPRESAS = SMALLINT */, CODIGO CODIGOS NOT NULL /* CODIGOS = INTEGER */, FECHAALTA FECHAS NOT NULL /* FECHAS = DATE */, USUARIO NOMBRES NOT NULL /* NOMBRES = VARCHAR(100) */, CODIGOCONTACTO CODIGOS NOT NULL /* CODIGOS = INTEGER */, TIPO VARCHAR(10) NOT NULL, FECHAPRESUPUESTO FECHAS NOT NULL /* FECHAS = DATE */, VIGENCIAPRESUPUESTO FECHAS /* FECHAS = DATE */, SITUACION SITUACIONES NOT NULL /* SITUACIONES = VARCHAR(30) */, FECHADECISION FECHAS /* FECHAS = DATE */, BASEIMPONIBLE IMPORTES2 /* IMPORTES2 = NUMERIC(11,2) DEFAULT 0 */, DESCUENTO PORCENTAJES /* PORCENTAJES = FLOAT */, IMPORTEDESCUENTO IMPORTES2 /* IMPORTES2 = NUMERIC(11,2) DEFAULT 0 */, IVA PORCENTAJES /* PORCENTAJES = FLOAT */, IMPORTEIVA IMPORTES2 /* IMPORTES2 = NUMERIC(11,2) DEFAULT 0 */, IMPORTETOTAL IMPORTES2 /* IMPORTES2 = NUMERIC(11,2) DEFAULT 0 */, OBSERVACIONES OBSERVACIONES /* OBSERVACIONES = BLOB SUB_TYPE 1 SEGMENT SIZE 100 */, PLAZOENTREGA OBSERVACIONES /* OBSERVACIONES = BLOB SUB_TYPE 1 SEGMENT SIZE 100 */, FORMAPAGO OBSERVACIONES /* OBSERVACIONES = BLOB SUB_TYPE 1 SEGMENT SIZE 100 */, OPCION NOMBRES /* NOMBRES = VARCHAR(100) */, BAJA CHAR(1) DEFAULT 'N', SITUACION_MONTAJE SITUACIONES /* SITUACIONES = VARCHAR(30) */, CODIGO_CONTACTO CODIGOS NOT NULL /* CODIGOS = INTEGER */, NIFCIF NIFCIFS /* NIFCIFS = VARCHAR(10) */, NOMBRE NOMBRES NOT NULL /* NOMBRES = VARCHAR(100) */, NOTAS DESCRIPCIONES /* DESCRIPCIONES = VARCHAR(2000) */, CALLE CALLES /* CALLES = VARCHAR(150) */, PROVINCIA PROVINCIAS /* PROVINCIAS = VARCHAR(30) */, CODIGOPOSTAL CODIGOSPOSTALES /* CODIGOSPOSTALES = VARCHAR(5) */, POBLACION POBLACIONES /* POBLACIONES = VARCHAR(40) */, TELEFONO1 TELEFONOS /* TELEFONOS = VARCHAR(30) */, TELEFONO2 TELEFONOS /* TELEFONOS = VARCHAR(30) */, MOVIL TELEFONOS /* TELEFONOS = VARCHAR(30) */, FAX TELEFONOS /* TELEFONOS = VARCHAR(30) */, CORREO1 CORREOS /* CORREOS = VARCHAR(60) */, CORREO2 CORREOS /* CORREOS = VARCHAR(60) */, PAGINAWEB NOMBRES /* NOMBRES = VARCHAR(100) */, PERSONACONTACTO NOMBRES /* NOMBRES = VARCHAR(100) */, BAJA_LOGICA SMALLINT DEFAULT 0 NOT NULL ); CREATE TABLE PRESUPUESTOSVIEJOS_DETALLES ( CODIGOPRESUPUESTO CODIGOS NOT NULL /* CODIGOS = INTEGER */, NUMCONCEPTO NUMCONCEPTOS NOT NULL /* NUMCONCEPTOS = SMALLINT */, POSICION SMALLINT NOT NULL, TIPO CHAR(1), DESCRIPCION DESCRIPCIONES /* DESCRIPCIONES = VARCHAR(2000) */, CANTIDAD CANTIDADES /* CANTIDADES = NUMERIC(9,0) */, PUNTOS PUNTOS /* PUNTOS = INTEGER */, IMPORTEPUNTOS IMPORTES2 /* IMPORTES2 = NUMERIC(11,2) DEFAULT 0 */, IMPORTEUNIDAD IMPORTES2 /* IMPORTES2 = NUMERIC(11,2) DEFAULT 0 */, IMPORTETOTAL IMPORTES2 /* IMPORTES2 = NUMERIC(11,2) DEFAULT 0 */, VISIBLE VISIBLE NOT NULL /* VISIBLE = CHAR(1) DEFAULT 'S' NOT NULL */, VALORADO CHAR(1) NOT NULL ); //CARGAMOS LAS TABLAS insert into presupuestosviejos select presupuestos.CODIGOEMPRESA, presupuestos.CODIGO, presupuestos.FECHAALTA, presupuestos.USUARIO, CODIGOCONTACTO, TIPO, FECHAPRESUPUESTO, VIGENCIAPRESUPUESTO, SITUACION, FECHADECISION, BASEIMPONIBLE, DESCUENTO, IMPORTEDESCUENTO, IVA, IMPORTEIVA, IMPORTETOTAL, OBSERVACIONES, PLAZOENTREGA, FORMAPAGO, OPCION, BAJA, SITUACION_MONTAJE, contactos.CODIGO as CODIGO_CONTACTO, NIFCIF, NOMBRE, NOTAS, CALLE, PROVINCIA, CODIGOPOSTAL, POBLACION, TELEFONO1, TELEFONO2, MOVIL, FAX, CORREO1, CORREO2, PAGINAWEB, PERSONACONTACTO, BAJA_LOGICA from presupuestos left join contactos on (contactos.codigo = presupuestos.codigocontacto) where fechapresupuesto > '2020.01.01' insert into PRESUPUESTOSVIEJOS_DETALLES select * from detallespresupuestos where codigopresupuesto in (select codigo from presupuestosviejos); migramos las dos tablas a la nueva base de datos creamos las tablas CREATE TABLE PRESUPUESTOSVIEJOS ( CODIGOEMPRESA SMALLINT, CODIGO INTEGER, FECHAALTA DATE, USUARIO VARCHAR(100), CODIGOCONTACTO INTEGER, TIPO VARCHAR(10) NOT NULL, FECHAPRESUPUESTO DATE , VIGENCIAPRESUPUESTO DATE , SITUACION VARCHAR(30) , FECHADECISION DATE , BASEIMPONIBLE NUMERIC(11,2) DEFAULT 0 , DESCUENTO FLOAT , IMPORTEDESCUENTO NUMERIC(11,2) DEFAULT 0 , IVA FLOAT , IMPORTEIVA NUMERIC(11,2) DEFAULT 0 , IMPORTETOTAL NUMERIC(11,2) DEFAULT 0 , OBSERVACIONES BLOB SUB_TYPE 1 SEGMENT SIZE 100 , PLAZOENTREGA BLOB SUB_TYPE 1 SEGMENT SIZE 100 , FORMAPAGO BLOB SUB_TYPE 1 SEGMENT SIZE 100 , OPCION VARCHAR(100) , BAJA CHAR(1) DEFAULT 'N', SITUACION_MONTAJE VARCHAR(30) , CODIGO_CONTACTO INTEGER , NIFCIF VARCHAR(10) , NOMBRE VARCHAR(100) , NOTAS VARCHAR(2000) , CALLE VARCHAR(150) , PROVINCIA VARCHAR(30) , CODIGOPOSTAL VARCHAR(5) , POBLACION VARCHAR(40) , TELEFONO1 VARCHAR(30) , TELEFONO2 VARCHAR(30) , MOVIL VARCHAR(30) , FAX VARCHAR(30) , CORREO1 VARCHAR(60) , CORREO2 VARCHAR(60) , PAGINAWEB VARCHAR(100) , PERSONACONTACTO VARCHAR(100) , BAJA_LOGICA SMALLINT DEFAULT 0 NOT NULL ); CREATE TABLE PRESUPUESTOSVIEJOS_DETALLES ( CODIGOPRESUPUESTO INTEGER, NUMCONCEPTO SMALLINT , POSICION SMALLINT NOT NULL, TIPO CHAR(1), DESCRIPCION VARCHAR(2000), CANTIDAD NUMERIC(9,0), PUNTOS INTEGER, IMPORTEPUNTOS NUMERIC(11,2) DEFAULT 0, IMPORTEUNIDAD NUMERIC(11,2) DEFAULT 0, IMPORTETOTAL NUMERIC(11,2) DEFAULT 0, VISIBLE CHAR(1) DEFAULT 'S' NOT NULL, VALORADO CHAR(1) NOT NULL ); exportamos metadata e importamos en la nueva //INSERTAMOS LOS PRESUPUESTO EN LOS CONTRATOS insert into contratos_cliente select GEN_ID(GEN_PRESUPUESTOS_CLI_ID, 1), 1, null, nifcif, nombre, calle, poblacion, provincia, codigopostal, 'PRE20/000' || GEN_ID(GEN_EMPRESAS_ID, 1), FECHAPRESUPUESTO, SITUACION, FORMAPAGO, PLAZOENTREGA, OBSERVACIONES, null, 0, fechaalta, fechaalta, 'carga_inicial', baseimponible, null, descuento, importedescuento, baseimponible - importedescuento, iva, importeiva, importetotal, 6, 1, null, case when iva is null then 4 when iva = 21 then 7 else 4 end, codigo_contacto, 0, 0, 0, null, null, null, tipo, null, null, opcion, fechadecision, null, codigo from presupuestosviejos create view V_clientesViejos( nifcif, nombre, calle, poblacion, provincia, codigopostal, telefono1, telefono2, movil, movil2, fax, correo1, correo2, paginaweb, notas, fechaalta, fechamodificacion, codigo_contacto ) as select distinct nifcif, nombre, calle, poblacion, provincia, codigopostal, substr(telefono1,1,24), substr(telefono2,1,24), substr(movil,1,24), substr(fax,1,24), substr(fax,1,24), correo1, correo2, paginaweb, notas, current_date , current_date , codigo_contacto from presupuestosviejos; //CREAMOS LOS CONTACTOS NUEVOS insert into contactos select GEN_ID(GEN_CONTACTOS_ID, 1), nifcif, nombre, calle, poblacion, provincia, codigopostal, telefono1, telefono2, movil, movil2, fax, correo1, correo2, paginaweb, notas, fechaalta, fechaalta, 'carga_inicial', 'CL20/000' || GEN_ID(GEN_PRESUPUESTOS_CLI_ID, 1), codigo_contacto, 1 from V_clientesViejos //Aņadimos como clientes insert into contactos_categorias select id, 1 from contactos where id < 10000 //Aņadimos el premiso para la empreas insert into empresas_contactos select GEN_ID(GEN_EMPRESAS_CONTACTOS_ID, 1), 1, id from contactos where id < 10000 //Insertamos tupla vacia de clientes_datos a todos los clientes insert into clientes_datos (id_cliente) select id from contactos where usuario = 'carga_inicial'; //Enlazamos los clientes update contratos_cliente set contratos_cliente.id_cliente = (select contactos.ID from contactos where ((contactos.PERSONA_CONTACTO is not null) and (contactos.PERSONA_CONTACTO = contratos_cliente.persona_contacto))) where contratos_cliente.id_cliente is null; insert into contratos_cliente_detalles select GEN_ID(GEN_CONTRATOS_CLI_DETALLE_ID, 1), (select contratos_cliente.ID from contratos_cliente where ((contratos_cliente.campo_libre is not null) and (contratos_cliente.campo_libre = presupuestosviejos_detalles.codigopresupuesto))), presupuestosviejos_detalles.posicion, case when tipo = 'C' then 'Concepto' when tipo = 'T' then 'Titulo' when tipo = 'S' then 'Subtotal' end, null, null, null, descripcion, cantidad, importeunidad, null, null, importetotal, case when visible = 'S' then 1 when visible = 'N' then 0 end, current_date, current_date, case when valorado = 'S' then 1 when valorado = 'N' then 0 end from presupuestosviejos_detalles