Cómo migrar datos de Access a MySQL

Publicado el 13.10.2019 a las 11:07

Cómo migrar datos de Access a MySQL

Cómo migrar datos de MS Access a MySQL

Después de haber perdido muchísimo tiempo probando distintas alternativas:

  • Creando un data source con un conecto ODBC (depende de la versión de Access y de MySQL)
  • Con hojas de cálculo de OpenOffice
  • ...

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

Crear las tablas en MySQL

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:

  • Los nombres de los campos deben de coincidir. Si quieres dar un nuevo nombre a una columna tendrás que modificar el nombre deseado en el fichero que generaremos en el siguiente paso.
  • No asignar autoincremnt a la llave primaria
  • Crear la tabla como InnoDB (en realidad esto es sólo para las tablas que vayan a tener llaves foráneas)

    Definir el tipo de dato de cada campo:

  • Elegir DATETIME para los campos de Access de Fecha/hora
  • Elegir FLOAT para los campos con decimales

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`);

Exportar datos de MS Access

Seleccionar la tabla en Access y en la pestaña Datos externos pulsar sobre ExcelExportar datos de Access a 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.

Tratar la hoja de cálculo

  • Cambiar el nombre si se desea de algún campo o columna para que coincidan con el nombre de los campos de la tabla de destino en MySQL
  • Definir el separador decimal como el punto. Si tu separador decimal es la coma, para cambiarlo:

    1. Haz click en Archivo y después en opciones

    2. En opciones pulsar en Avanzadas
    3. Cambiar la , por el . como separador decimal y cambiar el . por la , como separador de miles
    4. Cambiar separador decimal en Excel
  • Seleccionar las columnas con decimales y cambiar el formato de las celdas a número
  • Seleccionar las columnas con fechas y cambiar el formato a Fecha y elegir año-mes-día

    Dar formato a los campos de fecha en Excel
  • Exportar fichero a formato ODS (Open Document Sheet). Para click en Archivo -> Exportar -> Cambiar tipo de archivo

    Exportar de Excel a ODS

Importar los datos exportados en MySQL

Importar datos en phpMyAdmin

Cambiar la llave primaria a autoincrement

ALTER TABLE `productos`
        MODIFY `id_producto` int(11) NOT NULL AUTO_INCREMENT;

Crear las relaciones

Relaciones en phpMyAdmin

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 🖖

Servicios

Software

IoT

Digitalización

Aplicaciones móviles

Consultoría

fjmduran.com v0.2.2