Usar SQLite desde Shell Script

sqlitexample

En mi trabajo diario uso muchos shell scripts y generalmente en ellos hago uso de ficheros para guardar la informacion temporalmente, estos ficheros almacenan datos que seran leidos posteriormente desde otros shell scripts.
Esto aunque es funcional, presenta en ocasiones graves inconvenientes:
Tiempos de lectura/escritura en disco que son elevados e innecesarios o aun peor cuando esos ficheros se borran accidentalmente y no puede recuperarse la informacion desde los mismos.

Asi que me pregunte: ¿No existira una manera mas elegante de realizar estas mismas funciones?.

Y las posibilidades como siempre son muchas. Esta vez sin embargo me decante por SQLite.
SQLite es una base de datos muy ligera que guarda la informacion de las tablas internamente en ficheros y permite recuperar los datos de filas y columnas mediante consultas SQL.
Se emplea en productos como Firefox, para almacenar la cache del navegador e informacion de configuracion, o por ejemplo en Amarok, para indexar la informacion de los mp3 que tenemos en el disco duro.

Es una base de datos que no es recomendable usar en entornos de produccion, pues no es este su proposito, pero para pequeñas cosas como las que comento de guardar poca informacion temporalmente nos puede venir muy bien.

Instalarla es tan simple como:

$ sudo apt-get install sqlite3

Entonces ya podemos ejecutar:

$ sqlite

Para acceder a su prompt de control.

Nota: en los ejemplo uso “sqlite” en lugar de “sqlite3″, ello es por la version de SQLite instalada (si instalas una version inferior a la version 3, p.ej usaste apt-get install sqlite en lugar de apt-get install sqlite3“)  el comando es “sqlite” para referenciar a la base de datos, en vez de “sqlite3″.

Si la queremos usar desde la linea de comandos, recomiendo leer la documentacion de su sitio web.
Podriamos p.ejemplo crear una tabla y meter informacion en sus registros.

root@soledad:~# sqlite temp
SQLite version 2.8.17
Enter ".help" for instructions
sqlite> CREATE TABLE CACHE(ID varchar(100),NAME varchar(100),VALUE varchar(100));
sqlite> insert into CACHE values('Test01','NUMERO','1111199993');
sqlite> select * FROM CACHE;
Test01|NUMERO|1111199993
sqlite> insert into CACHE values('Test01','PROVISION','00000');
sqlite> select * FROM CACHE
...> ;
Test01|NUMERO|1111199993
Test01|PROVISION|00000
sqlite> select * FROM CACHE where NAME='PROVISION';
Test01|PROVISION|00000
sqlite> select VALUE FROM CACHE where NAME='PROVISION';
00000
sqlite> .quit
root@soledad:~# sqlite temp "SELECT VALUE FROM CACHE where NAME='PROVISION'";
00000
root@soledad:~# sqlite temp "INSERT INTO CACHE VALUES('Test02','NUMERO','11113333');"
root@soledad:~# sqlite temp "SELECT VALUE FROM CACHE";
1111199993
00000
11113333

Pero a mi me interesa usarla desde shell script. ¿Como puedo usarla?. pues muy simple. Los comandos serian:

VARIABLE=`sqlite base_de_datos "sentencia_SQL_a_ejecutar"`

Ejemplos:

sqlite temp "INSERT INTO TABLA VALUES('1','2')";

Inserta un registro en una tabla llamada TABLA de la base de datos (fichero) llamado “temp”

MI_DATA=`sqlite temp "select c from t where condicion='1'"`
echo "Recuperado $MI_DATA"

Ejecuta “select c from t where condicion=’1′” en una base de datos llamada “temp”

Estos ejemplos SQL son muy tontos y no funcionales, unicamente los pongo como ejemplo de como es la sintaxis.

Genial,verdad!!! se acabo el uso de ficheros en shell si no es extrictamente necesario.

De todas formas en la imagen adjunta al comienzo del post teneis un ejemplillo de libreria en bash para poder usar desde shell script.
Podeis utilizarla o crear la vuestra propia para por ejemplo almacenar notas, o configuraciones de maquinas, etc… las posibilidades son infinitas.

Y para diseñar el modelo de datos si no tienes ninguna tool a mano, puedes usar de manera online: wwwsqldesigner cuyo codigo podeis descargar desde Google code.

Para acabar, las bases de datos se crean ejecutando “sqlite nombre_de_la_base_de_datos” a secas:

$ sqlite3 mydb

Crearia una base de datos llamada “mydb” que realmente es un fichero del sistema de archivos.
entonces se abre el promt de la base de datos, y ya podemos crear la tablas, etc…
..
sqlite3> CREATE TABLE…

Mas informacion:

http://www.sqlite.org/cvstrac/wiki?p=ShellScript

http://snippets.dzone.com/posts/show/3080

http://mailliststock.wordpress.com/2007/03/01/sqlite-examples-with-bash-perl-and-python/

http://www.sqlite.org/index.html

7 Responses to “Usar SQLite desde Shell Script”


  1. 1 shakaran enero 29, 2009 en 2:29 pm

    Muy útil

    Yo he utilizado un script en python para migrar tablas de Microsoft Access a sqlite y la verdad es que se nota muy buen rendimiento.

    Saludos.

  2. 2 juancarlospaco enero 29, 2009 en 4:28 pm

    @shakaran: Compartilo…

  3. 3 shakaran enero 29, 2009 en 5:04 pm

    @juancarlospaco: estoy en ello, tengo varios borradores sin publicar en mi blog (los exámenes no me dejan mucho tiempo).

    Espero que este fin de semana pueda terminar alguno y publicarlo. Son unas 300 lineas de código y me gusta explicar bien las cosas para que no queden dudas ;)

    Saludos

  4. 4 [DoodoM] enero 29, 2009 en 11:26 pm

    La verdad es que no hace ni 1 semana que he descubierto el SQLite debido a que tuve que arreglar una tabla del paclaces.sqlite del Firefox 3, y la verdad es que es un juguetito que me encanta, y creo que tiene aplicaciones muy útiles. Yoo principalmente trabajo con MySQL, pero me encanta lo sencillo, minimalista e independiente que lo hace todo SQLite.

    Por cierto, gracias por compartir el pantallazo del shell script.

  5. 5 mjasso enero 29, 2010 en 1:50 am

    yo tengo un problema con sheel script y sqlite:

    cunado hago la consulta de primera instancia o por primera ves no hay ningun problema, el detalle es despues de haber hecho la pimer consulta ya no ejecuta nada de script, es decir si arranca el shell y corre el sqltie3.exe pero no efectua la consulta

    archivo shell (o bat)
    ****************************************************************
    Rem______________________________________________________________
    Rem
    Rem Generador de consultas para Sqlite en la base Week Control Sqlite.s3db
    Rem la consulta esta en el archivo SqliteQry.sql
    Rem el motor corre desde Sqlite3.exe
    Rem______________________________________________________________
    Cls
    Sqlite3 Week_Control_SQLITE.s3db<Sqliteqry.sql1
    ****************************************************************

    archivo sqliteqry.sql1
    ****************************************************************
    .OUTPUT QuerySqlite.csv
    .MODE csv
    .head on
    Select * from [base access];
    .quit
    ****************************************************************

  6. 6 Rino marzo 16, 2010 en 12:37 am

    Buenisimo!!
    justo necesitaba algo asi para un mini tutorial de como explicar las funciones basicas de sql!! de 10!!


  1. 1 Usar SQLite desde Shell Script | #run4life Trackback en mayo 1, 2013 en 3:34 pm

Deja un comentario

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





The next version of Ubuntu is coming soon


¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map
enero 2009
L M X J V S D
« dic   feb »
 1234
567891011
12131415161718
19202122232425
262728293031  

Blog Stats

  • 26,941,910 hits

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 1.045 seguidores

A %d blogueros les gusta esto: