Publicado el 13.10.2019 a las 09:07
Después de haber perdido muchísimo tiempo probando distintas alternativas:
La alternativa que recomiendo es la que voy a describir. Tiene el problema que es semiautomática, pero si no tienes muchas tablas hazlo así, ya que no te fallará.
Podrías saltarte este paso, pero si tu tabla tiene campos de fechas o decimales tendrás que hacer este paso para no perder información.
Crear las tablas padres, es decir, las que no tienen llaves foráneas.
Tienes que tener la precaución de:
Definir el tipo de dato de cada campo:
Por ejemplo:
CREATE TABLE `productos` ( `id_producto` int(11) NOT NULL, `descripcion` varchar(255) NOT NULL, `referencia` varchar(50) DEFAULT NULL, `id_proveedor` int(11) NOT NULL, `pvp_compra` float DEFAULT NULL, `dto_compra` float DEFAULT NULL, `pvp_venta` float NOT NULL, `stock` int(11) DEFAULT NULL, `observaciones` varchar(500) NOT NULL, `plazo_dias_entrega` int(11) NOT NULL, `dto_venta` float NOT NULL, `iva_venta` float NOT NULL, `id_iva` int(11) NOT NULL, `iva_compra` float NOT NULL, `caduca` datetime NOT NULL, `precio_modificado` datetime NOT NULL, `codigo_barras` varchar(50) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE `productos` ADD PRIMARY KEY (`id_producto`), ADD KEY `proveedor` (`id_proveedor`) USING BTREE, ADD KEY `grupo_iva` (`id_iva`);
Seleccionar la tabla en Access y en la pestaña Datos externos pulsar sobre Excel
Atención: el nombre que se le dará a la pestaña será el nombre de la tabla, y cuando se importe a MySQL lo hará con ese nombre. Si quieres importar los datos en una tabla con otro nombre cambia el nombre de la pestaña de la hoja de cálculo.
Definir el separador decimal como el punto. Si tu separador decimal es la coma, para cambiarlo:
Haz click en Archivo y después en opciones
Seleccionar las columnas con fechas y cambiar el formato a Fecha y elegir año-mes-día
Exportar fichero a formato ODS (Open Document Sheet). Para click en Archivo -> Exportar -> Cambiar tipo de archivo
ALTER TABLE `productos` MODIFY `id_producto` int(11) NOT NULL AUTO_INCREMENT;
O bien con las instrucciones SQL:
ALTER TABLE `productos` ADD CONSTRAINT `productos_ibfk_1` FOREIGN KEY (`id_proveedor`) REFERENCES `proveedores` (`id_proveedor`), ADD CONSTRAINT `productos_ibfk_2` FOREIGN KEY (`id_iva`) REFERENCES `ivas` (`id_iva`);
Hasta luego 🖖