h1

Como renombrar una columna en Sqlite 3

16/11/2009

Sqlite 3, al menos hasta su versión 3.6.20, no soporta el renombrado de columnas, por lo que la siguiente sentencia no es funcional:

sqlite> alter table tableName rename OldColumnName to NewName

Para cubrir esta necesidad, se volcarán los datos de la tabla con el mal nombrado de columna a otra similar pero con la columna correctamente nombrada, y posteriormente se renombrará la propia tabla. Esto que parece una tarea farragosa puede realizarse sencillamente así:

1º) Crear una copia de la tabla a tratar con el campo corregido:
sqlite> CREATE TABLE hashes_files_nueva (file varchar(256), id varchar(256), crime varchar(128));

2º) Copiar los datos de la tabla original a la nueva tabla:
sqlite> INSERT INTO hashes_files_nueva (file, id, crime)
SELECT *
FROM hashes_files;

3º) Borrar la tabla inicial:
sqlite> DROP TABLE hashes_files;

4º) Renombrar la tabla:
sqlite> ALTER TABLE hashes_files_nueva RENAME TO hashes_files;

Opcionalmente, como Sqlite por defecto no libera el espacio en disco de una tabla borrada, se puede forzar su liberación:
sqlite> vacuum;

Si se desea hacer con interfaz gráfica, se puede probar Sqlitebrowser ó Firefox Sqlite Manager Plugin.

Fuentes: StackOverFlow, Grass.orgeo.org

2 comentarios

  1. Avatar de Juan Ramon

    Muy buena esta información colega, sin embargo tengo ese pequeño inconveniente con el DROP TABLE, comentas que se usa «vacuum;» , ammm pero como expreso esa sentencia en JAVA, estoy utilizando SQLite como el motor de BD pero no comprendo.


  2. Avatar de Nevaeh

    I’m so glad that the ineerntt allows free info like this!



Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.