Tenemos una base de datos en Access y necesitamos importar los datos desde Access que están en Windows a una base de datos MySQL que está en un servidor Linux. Nos enfrentamos a dos dificultades importantes:
La primera es exportar datos de Access a MySQL, he buscado en internet y he encontrado algunos trucos, pero suelen ser métodos complejos que implican descargar en nuestro equipo controladores ODBC y luego hay que configurarlos, las pruebas que hice no fueron exitosas.
La otra dificultad es que el destino no se encuentra en el mismo equipo sino en un servidor web con Linux.
La solución final que tomé y yo creo que aunque no es directa es relativamente sencilla: consiste en exportar los datos en un archivo XML y luego recuperarlos en MySQL importando el archivo XML. Pero hay un problema que veremos más adelante: el formato.
Para exportar en XML basta con entrar en Access y en la pestaña datos externos elegir Archivo XML
Exportar datos desde Access
Le indicamos donde queremos que vaya el archivo
Seleccionamos la información a exportar sólo XML.
Vemos el archivo creado.
Ahora metemos el archivo en un pendrive y vamos al servidor Linux desde el cual capturamos el pendrive.
Dejamos el archivo donde queramos.
Modificar el archivo XML
La idea general es siempre automatizar el proceso en la medida de lo posible, pero esta vez me ha resultado imposible porque el formato XML que guarda Access no coincide con el formato que lee MySQL, así que no hay más remedio que modificar el archivo XML manualmente, afortunadamente hay una forma de “automatizar” esto de manera que podemos hacerlo rápidamente incluso aunque tengamos miles de registros.
Lo primero que tenemos que hacer es instalar en nuestro equipo notepad ++ para tener un editor de código, o utilizar uno de nuestra preferencia. Podemos modificarlo en Windows o en Linux con Gedit o con el editor que más fácil y cómodo nos resulte.
En este caso hemos utilizado Notepad ++ desde Windows. En primer lugar abrimos el archivo .xml generado por Access.
Ahora tenemos que tratar de reescribirlo con el formato de salida de MySQL que es este:
<?xml version="1.0" encoding="UTF-8"?>
<!--
- phpMyAdmin XML Dump
-version 4.7.7
-https://www.phpmyadmin.net
-
-servidor: localhost:3306
-->
<pma_xml_export version="1.0">
<!--
-Base de datos: 'bitnami_worpress'
-->
<database name="bitnami_wordpress">
<!-- Tabla wp_tbadjetivoneg -->
<table name="wp_tbadjetivoneg">
<column name="Descripcion">incapacidad</column>
<column name="idTipo">0</column>
</table>
<table name="wp_tbadjetivoneg">
<column name="Descripcion">crueldad</column>
<column name="idTipo">0</column>
</table>
<table name="wp_tbadjetivoneg">
<column name="Descripcion">indiferencia</column>
<column name="idTipo">0</column>
</table>
Como podemos ver, el formato no es muy parecido, pero podemos abrir juntos ambos archivos y cortar la cabecera del generado con MySQL y pegarla en el archivo generado por access.
El campo IdAdjetivo es auto-numérico, es decir lo genera la base de datos al copiar los campos, por tanto debemos eliminar todos los campos <IdAdjetivo> del XML.
Ahora podemos utilizar la opción reemplazar de Notepad ++ pada sustituir <Descripcion> por </column name=”Descripcion”>, y < IdTipo> por <column name =”IdTipo”> podemos semi-automatizarlo pulsando el botón remmplazar todo, así aunque tengamos muchas líneas no será problema.
También sustituimos <tbNombreTabla> por <table name="wp_tbNombreTabla"> y </tbNombreTabla> por </table>
En nuestro caso particular, para no eliminar manualmente el campo autonumérico <IdAdjetivo> lo sustituimos por “”. Podemos hacer una búsqueda genérica para no tener que ir borrando todos los códigos uno a uno. Para ello donde aparece un número de dos cifras lo sustituimos por [0-9]{2} y marcamos en la parte inferior la opción Expresión regular.
Hecho esto ya tenemos nuestro archivo convertido al formato XML que leerá MySQL, finalmente, no hay que olvidarse de cerrar el archivo con:
</table>
</database>
</pma_xml_export>
Hecho esto ya tenemos listo nuestro archivo para importarlo desde MySQL.
Importar datos desde MySQL
Desde la consola de phpMyadmin pulsamos en el botón más a la derecha del todo y elegimos Importar. Esto nos abre una pantalla como la inferior donde seleccionamos el archivo a importar.
Le indicamos que el formato es XML
Una vez hemos importado, comprobamos que los datos estén importados correctamente en la tabla. Con nuestro sistema tal vez de fallos, pero aun así importará los datos.
No hay comentarios:
Publicar un comentario