Luis Molina

tecnologías de la información, experiencias, conocimiento

Convertir de SQLite a MySQL

with 7 comments

convertir-sqlite-mysql

Aunque he intentado hacer funcionar de forma aceptable un WordPress con SQLite, finalmente el servidor donde lo alojaba no me facilitaba la tarea así que he decidido utilizar WordPress con MySQL, como toda la vida, aunque tenga que alojar la base de datos en un servidor externo.

Tras investigar  algo por Internet y darme algún cabezazo con imports/exports de SQL, estos son los pasos que he seguido para convertir una base de datos SQLite a MySQL (proceso también conocido como migración de SQLite a MySQL):

  1. Generar una exportación de la base de datos SQLite en un fichero SQL.
  2. Editar el fichero SQL generado para hacer los siguientes cambios:
    • Reemplazar AUTOINCREMENT por AUTO_INCREMENT.
    • Eliminar las comillas dobles en los nombres de los objetos, ya que MySQL no las contempla. Por ejemplo, hay que reemplazar “wp_posts” (incluyendo las comillas) por wp_posts.
    • En los campos que deban ser de tipo fecha/hora, reemplazar text not null default ‘0000-00-00 00:00:00’  por datetime not null. Fíjate en el not null: cámbialo si te conviene que sea null. Además, es posible que tú sí necesites algún valor predeterminado para algún campo de tipo datetime.
    • Eliminar el valor predeterminado (default) de los campos blob/text.
    • En general, repasar todos los campos que tengan formato text (generado por SQLite) ya que que algunos deberán cambiarse por datetime (como he explicado anteriormente) o por varchar.
    • Aunque yo no he tenido que hacerlo, en algún sitio he visto que hay que borrar todas las líneas donde aparezca sqlite_sequence.
  3. Una vez modificado y guardado el fichero (previa copia de seguridad, claro está😉 ), importar este fichero SQL a la base de datos MySQL (por ejemplo, con phpMyAdmin).
  4. Fin.

Un ejemplo

A continuación muestro un ejemplo de migración de una tabla, lo que viene a llamarse “el antes y el después”:

Tabla wp_comments en SQLite (ANTES)

CREATE TABLE wp_comments (
 comment_ID integer NOT NULL PRIMARY KEY AUTOINCREMENT ,
 comment_post_ID integer NOT NULL default '0',
 comment_author blob NOT NULL,
 comment_author_email text NOT NULL default '',
 comment_author_url text NOT NULL default '',
 comment_author_IP text NOT NULL default '',
 comment_date text NOT NULL default '0000-00-00 00:00:00',
 comment_date_gmt text NOT NULL default '0000-00-00 00:00:00',
 comment_content text NOT NULL,
 comment_karma integer NOT NULL default '0',
 comment_approved text NOT NULL default '1',
 comment_agent text NOT NULL default '',
 comment_type text NOT NULL default '',
 comment_parent integer NOT NULL default '0',
 user_id integer NOT NULL default '0');

 

Tabla wp_comments en MySQL (DESPUÉS)

CREATE TABLE wp_comments (
 comment_ID integer NOT NULL PRIMARY KEY AUTO_INCREMENT ,
 comment_post_ID integer NOT NULL default '0',
 comment_author text NOT NULL,
 comment_author_email varchar(100) NOT NULL default '',
 comment_author_url varchar(200) NOT NULL default '',
 comment_author_IP varchar(100) NOT NULL default '',
 comment_date datetime NOT NULL ,
 comment_date_gmt datetime NOT NULL ,
 comment_content text NOT NULL,
 comment_karma integer NOT NULL default '0',
 comment_approved varchar(20) NOT NULL default '1',
 comment_agent varchar(255) NOT NULL default '',
 comment_type varchar(20) NOT NULL default '',
 comment_parent integer NOT NULL default '0',
 user_id integer NOT NULL default '0');

 
Pues nada más, espero que te sirva.

Written by Luis Molina

14 noviembre 2011 a 21:25

Publicado en Artículos

Tagged with , , , ,

7 comentarios

Subscribe to comments with RSS.

  1. Buenas, me gustaría poder hablar contigo sobre este tema, que veo que lo dominas bien. No se si tendrías algún inconveniente en darme tu correo.

    Un saludo

    seuse

    9 marzo 2012 at 01:42

    • Hola, te he escrito un email a la dirección que me has dejado en el comentario. Saludos.

      Luis Molina

      12 marzo 2012 at 07:40

  2. perfecto todo…. gracias

    Miguel angel

    25 abril 2012 at 18:42

  3. Muchas gracias, me has ahorrado mucho tiempo y cabezados.

    Mon

    20 octubre 2012 at 17:01

  4. amigo como haces la exportacion al fichero SQL? con sqlite admin probé y no me deja exportar, esta deshabilitada la opcion, saludos y gracias

    Ever

    28 mayo 2013 at 00:43

    • Yo he usado el SQLite Manager (complemento para Firefox) y me funcionó bien. Pruébalo a ver qué tal.

      Luis Molina

      30 mayo 2013 at 18:09


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s