Luis Molina

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

Posts Tagged ‘sqlite

Convertir de SQLite a MySQL

with 9 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.

Anuncios

Written by Luis Molina

14 noviembre 2011 at 21:25

Publicado en Artículos

Tagged with , , , ,