usuario
clave
iniciar sesión
regístrate
Portada
Canales
  • Apple
  • Blackhats
  • Ciencia
  • Comunicación
  • Curiosidades
  • e-Administración
  • Empresas
  • Eventos
  • Hardware
  • Nombramientos
  • Seguridad
  • Software
  • Software Libre
  • Telefonía
  • Videojuegos
  • Wireless
El Periódico
  • Blogs amigos
  • Editorial
  • Entrevistas
  • Gadgets
  • Minijuegos
  • Perfiles
  • Tags
  • Top noticias
  • Videorreportajes
  • Webcómics
MiFlecha
  • Blogs
  • Imágenes
  • Videos
Servicios
  • Boletines
  • Formación
  • Tienda
  • Viviendas
Comunidad
  • Encuestas
  • Foros
  • Emails de los lectores
  • Chat
Viviendas
Acción:
Propiedad:
Provincia:



Patrocinado por:
Pisos y casas en España
Tienda
Boletín semanal
Email:
Boletines publicados
  • Software Libre
  • Artículos
Software Libre
  • Reduciendo costes con Software Libre
  • Cinco cosas que el software libre me ha enseñado
  • Exportar Bases de Datos de Access (MDB) a MySQL (y II)
  • Exportar Bases de Datos de Access (MDB) a MySQL (I)
  • Los pecados capitales de los proyectos open source
Del mismo autor
  • Exportar Bases de Datos de Access (MDB) a MySQL (y II)
    Software Libre
  • Exportar Bases de Datos de Access (MDB) a MySQL (I)
    Software Libre

Exportar Bases de Datos de Access (MDB) a MySQL (I)

En algún momento de nuestras precarias vidas, decidimos que las obsoletas BB.DD de Access que andan rodando por los discos duros se convierten en un peligro, todo el mundo puede abrirlas, editarlas, y guardarlas, y cuando tenemos en nuestra tarea, convertirlas a MySQL, ¿habría algún método para hacerlo? Aquí te presentamos a cual mejor. 3 opciones para elegir.

02 Oct 2008 | Javier Orovengua
M(PRIMERA OPCIÓN) etodología básica

Básicamente se pueden dividir los métodos en directos e indirectos. Los métodos directos abren los archivos .DBF o .MDB, se conectan a la base de datos MySQL y transfieren sus contenidos a través de esa confección. Los métodos indirectos generan uno o más archivos temporales, en base a los que posteriormente se crearán las tablas de la base de datos y/o insertarán los registros.

En el caso de métodos indirectos, para cada archivo .dbf o tabla Access, estos son los pasos básicos que han de tomarse para migrar:

Generar un archivo ASCII con las instrucciones SQL para la creación de la/s tablas/s.

Exportar desde el archivo .MDB o archivos .DBF a un/unos archivo/s ASCII con: a) las instrucciones SQL para insertar datos en las tablas o b) los datos puros, delimitados por comas/tabulaciones, etc.

Ejecutar el archivo con las instrucciones SQL de creación de tablas.

Ejecutar el archivo ASCII con instrucciones SQL de inserción, o IMPORTAR archivo ASCII con datos puros usando el comando sql LOAD DATA INFILE.

Entorno de trabajo

Para los propósitos de este texto, vamos a definir algunos aspectos del ambiente donde trabajar:

  • Una estación con Windows y Linux instalados.

  • En la partición Linux, tener instalado un editor ASCII y la base de datos MySQL como mínimo, con el hostame configurado como localhost (bueh...) y con acceso a la partición windows, para este caso, tener acceso a c:/ en el directorio /mnt/windows).

  • En la partición Windows tener instalado Microsoft Access versión 97 como mínimo. Los archivos temporales de conversión se grabarán en el directorio c:/temp ( /mnt/windows/temp desde linux).

  • Una base de datos, en ambos formatos .DBF y .MDB, en este caso conteniendo los datos de una colección de libros. Los archivos residirán en el directorio c:data.

  • Para usar la herramienta dbtools, es necesario contar con DOS estaciones conectadas en red, una con Windows y DBTools instalados y otra con Linux y MySQL instalados.

  • Es recomendable acceder a la base de datos como un usuario común con privilegios bien acotados, o en todo caso tener disponible varios usuarios tipo dependiendo del trabajo (tipo dba para acceso total, común para entrada de datos o listados por ejemplo), pero NUNCA como root, porque este usuario tiene todos los privilegios en el sistema, incluso para dañarlo seriamente.

Conversión sin herramientas específicas (o con herramientas nativas, o lo que sea bah...)

Hay buenas razones para no depender de herramientas especializadas de conversión (la más sencilla de las cuales es no disponer de ellas , sin olvidar el masoquismo), como por ejemplo la necesidad de adaptar las tablas a las características de la nueva base de datos. En mi caso en particular, siempre he tenido que generar la estructura con algún conversor y modificar o agregar sentencias sql para aprovechar alguna característica ausente o diferente en la base de datos original.

Generar estructura con editor de texto

En última instancia he tenido que arreglarme creando las sentencias con cualquier editor ASCII:

CREATE DATABASE libros; CREATE TABLE autores( idautor INT NOT NULL, nombre CHAR (50), apellidos CHAR (50), PRIMARY KEY (idautor) ); CREATE TABLE autorlib( idautorlib INT NOT NULL, idautor INT, idlibro INT, PRIMARY KEY (idautorlibro) ); CREATE TABLE libros( idlibro INT NOT NULL, cargo CHAR (50), idtema INT, copyright SMALLINT, númisbn CHAR (50), páginas SMALLINT, PRIMARY KEY (idlibro) ); CREATE TABLE temas( idtema INT NOT NULL, desctema CHAR (50), PRIMARY KEY (idtema) );

Luego de guardarlo como libros.sql, genero la base de datos pasando libros.sql por la consola mysql:

mysql < /mnt/windows/temp/libros.sql

Con esto ya tenemos creada la base de datos LIBROS con sus tablas. Esta estructura nos servirá para convertir desde cualquier formato.

Exportar tablas desde Access

Después, volviendo a Windows, desde Access, por cada tabla se usa la opción "Archivo / Guardar como o exportar... / En un archivo o una base de datos externo", en la ventana de diálogo, en la opción "Guardar como tipo:" seleccionar "Archivos de texto"

En la ventana "..." seleccionando el botón "Avanzado..." se pueden configurar estas opciones de exportación sin pasar por los sucesivos pasos del asistente:

Formato de archivo: Delimitado Delimitador de campo: , Cualificador de texto: " Orden de la fecha: DMA

Un poco confuso todo no? No es para tanto, probando con el programa todo se ve más claro. Luego de este paso deberíamos tener cuatro archivos: autorlib.txt, autores.txt, libros.txt y temas.txt

Exportar tablas desde xBase

Prácticamente cualquier dialecto xBase soporta el comando COPY TO (archivo) DELIMITED

Para nuestro caso:

USE libros COPY TO libros.txt DELIMITED USE autores COPY TO autores.txt DELIMITED USE autorlib COPY TO autorlib.txt DELIMITED USE temas COPY TO temas.txt DELIMITED

Si es un entorno de comando se pueden ejecutar uno por uno, si es un lenguaje compilado como clipper, se graba en archivo .prg, se compila y se ejecuta.

Otra vez, deberíamos tener cuatro archivos: autorlib.txt, autores.txt, libros.txt y temas.txt

Importación de tablas a MySQL

En cualquiera de los dos casos, otra vez en linux, desde la consola MySQL se ejecuta el comando LOAD DATA INFILE por cada tabla

LOAD DATA INFILE '/mnt/windows/temp/libros.txt' INTO TABLE libros FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY ' '; LOAD DATA INFILE '/mnt/windows/temp/autores.txt' INTO TABLE autores FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY ' '; LOAD DATA INFILE '/mnt/windows/temp/autorlib.txt' INTO TABLE autorlib FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY ' '; LOAD DATA INFILE '/mnt/windows/temp/temas.txt' INTO TABLE temas FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY ' ';
Xbase a Mysql dbf2mysql

mysql.vision.cl/Downloads/Contrib/dbf2mysql-1.14.tar.gz[1]

dbf2mysql es una pequeña y excelente aplicación que genera información SQL a partir de archivos xBase. He aquí una traducción de sus opciones:

-v muestra detalles de la conversión -vv muestra más detalles -vvv incluye informe de progreso -f traduce los nombres de campo a minúsculas -u traduce los textos de campos alfanuméricos a mayúsculas -l traduce los textos de campos alfanuméricos a minúsculas -n no se agrega 'NOT NULL' en las sentencias de creación de tabla -o exporta solo los campos listados -e archivo para conversión de caracteres -s substituye permite cambiar nombres de campos. Ej. -s NOMBRE=AYN,DIR=DIRECCION -i lista de campos a indexar (atte: genera UN indice por campo) -d base de datos donde se insertaran los datos -t tabla donde se insertarán los datos -c crea la tabla si no existe -cc crea la tabla, pero no inserta registros -p indica la clave primaria -h indica server donde conectarse -F los campos de caracteres se formatean como de longitud fija -q modo rápido inserta los registros a través de un archivo temporal usando la sentencia LOAD DATA INFILE -r quita espacios antes y después de datos alfanuméricos

Suponiendo que quiero hacer una conversión directa, solo necesito crear la base de datos en blanco, por ejemplo desde la consola mysql:

create database libros; quit

Y luego ejecutar dbf2mysql para crear las tablas e insertar los datos:

dbf2mysql -h localhost -d libros -t autores -c -f -p idautor /mnt/c/data/autores.dbf dbf2mysql -h localhost -d libros -t libros -c -f -p idlibro /mnt/c/data/libros.dbf dbf2mysql -h localhost -d libros -t temas -c -f -p idtema /mnt/c/data/temas.dbf dbf2mysql -h localhost -d libros -t autorlib -c -f -p idautorlib /mnt/c/data/autorlib.dbf

La principal desventaja de este método es que no se crean algunos atributos deseables, como es el caso de los campos autoincrementables. En este caso, lo más recomendable es crear nuestra propia estructura, otra vez volvemos al método de crear la estructura con un editor ASCII y generar la base de datos vacía con la consola MySQL como se explico aquí. Luego se insertan los datos con este conjunto modificado de comandos dbf2mysql:

dbf2mysql -h localhost -d libros -t autores -f /mnt/c/temp/autores.dbf dbf2mysql -h localhost -d libros -t libros -f /mnt/c/temp/libros.dbf dbf2mysql -h localhost -d libros -t temas -f /mnt/c/temp/temas.dbf dbf2mysql -h localhost -d libros -t autorlib -f /mnt/c/temp/autorlib.dbf
Comentarios
LaFlecha.net no se hace responsable del contenido de los comentarios publicados.
Editar | Borrar | #1 | 21 Oct 2008, 21:41
Yo Panama

No sirvee la informaciion porque la profesora nos dioo otras preguntas =)

Editar | Borrar | #2 | 04 Ago 2009, 20:46
Anónimo Colombia

ghoguuu

Editar | Borrar | #3 | 09 Sep 2009, 15:51
Anónimo Colombia

hola

Editar | Borrar | #4 | 27 Sep 2009, 15:55
nadie

no me sirvio para nada,.....

Editar | Borrar | #5 | 05 Nov 2009, 18:55
Anonimo Spain

feo,tonto

Editar | Borrar | #6 | 30 May 2011, 23:08
Anónimo Mexico

HOLA

Editar | Borrar | #7 | 30 May 2011, 23:09
Anónimo Mexico

HOLA

Editar | Borrar | #8 | 30 May 2011, 23:10
PELAO Mexico

HOLA

Editar | Borrar | #9 | 19 Nov 2012, 01:15
!S!WCRTESTINPUT000000!E! Mexico

!s!wcrtesttextarea000001!e!

Entérate de cuándo hay nuevos comentarios

No se permitirán los comentarios que :
- puedan resultar ofensivos o injuriosos
- incluyan insultos, alusiones sexuales innecesarias y palabras soeces o vulgares
- apoyen la pedofilia, el terrorismo o la xenofobia

Autor
Comentario
Ver más...
BBCode (Ayuda): [b], [i], [u], [s], [quote], [code], [spoiler]
Publicidad


Teléfonos Móviles Videojuegos Informática Libros y Revistas
  • Acerca de LaFlecha
  • Contactar
  • Política de privacidad
  • RSS/RDF
  • Síguenos en Twitter
  • ¿Quieres saberlo todo sobre Hacking?
  • Svenson
  • Curso Inglés intensivo
  • Aprendemás
  • Médicos Sin Fronteras