Ejemplos comandos específicos sqlite

A continuación mostramos algunos ejemplos de uso de los comandos sqlite

Para mostrar las bases de datos, procedemos de la siguiente manera:

sqlite>.databases

Obteniéndose un listado de todas las bases de datos y ficheros asociados, por ejemplo:

seq  name         file 
---  ------------ ----------------------------------------------------------
0    main         /data/data/com.example.ALMACEN/databases/ALMACEN_DB.db 
1    temp

Para obtener un listado de las tablas existentes que cumplan cierto patrón

sqlite>.tables "%ac%"

Obteniéndose un listado de las tablas que contenga el string “ac”, como por ejemplo:

almacen   actividades_al

Con .schema conocemos la sentencia sql de creación por ejemplo de la tabla almacen:

sqlite>.schema almacen
CREATE TABLE almacen (_id integer primary key, nombre text, cantidad integer check (cantidad >= 0), descripcion text);

Haciendo uso del comando .show podemos conocer el estado de las variables ajustadas tal y como se muestra a continuación, las variables echo, explain y stats están desactivadas. De la misma manera no se muestran las cabeceras de las tables, siendo el modo de presentación de los datos por columna, no especificándose una anchura de la misma. Además, en el caso de que el valor almacenado en la tabla sea null, aparecerá el string NULL. En el caso de usar separador entre columnas, se ha definido la “,” y por último la salida está dirigida a pantalla

sqlite>.show
     echo: off
  explain: off
  headers: off
     mode: column
nullvalue: "NULL"
   output: stdout
separator: ","
    stats: off
    width:

Si seleccionamos todos los datos almacenados en la tabla almacen obtenemos el siguiente resultado:

sqlite>select * from almacen;
sqlite>select * from almacen;
1      Pantalón     8           Corto y sin costuras
2      Corbata      NULL        NULL 
3      Pantalón    10           Largo 
4      Zapatos      2           Negros 
5      Zapatos      9           Temporada verano 
6      Camisas      3           Manga corta

Realizando las modificaciones siguientes para mostrar cabecera, cambiar a modo csv, cambiar el separador por “-”,el caracter NULL a vacío  y mostrar el temporizador de la cpu, obtendríamos los siguientes cambios:

sqlite>.mode csv
sqlite>.separator "-"
sqlite>.nullvalue ""
sqlite>.timer on
sqlite>.show
     echo: off
  explain: off
  headers: off
     mode: csv
nullvalue: ""
   output: stdout
separator: "-"
    stats: off
    width:

Realizamos la consulta a la tabla y visualizamos resultados,

sqlite>select * from almacen;
_id-nombre-cantidad-descripcion
1-"Pantalón"-8-"Corto y sin costuras"
2-Corbata--
3-"Pantalón"-10-Largo
4-Zapatos-2-Negros
5-Zapatos-9-"Temporada verano"
6-Camisas-3-"Manga corta"
CPU Time: user 0.010000 sys 0.010000

Una de las manera de volcar a fichero la estructura de la base de datos así como su contenido podría ser haciendo uso del comando .dump como sigue:

root@generic:/data/data/com.example.ALMACEN/databases # sqlite3 ALMACEN_DB.db .dump > almacen_backup.txt

Visualizando el contenido del fichero, se obtendrían todas las creaciones de tablas así como operaciones sobre las mismas.

root@generic:/data/data/com.example.ALMACEN/databases # cat almacen_backup.txt
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE android_metadata (locale TEXT);
INSERT INTO "android_metadata" VALUES('en_US');
CREATE TABLE almacen (_id integer primary key, nombre text, cantidad integer check (cantidad >= 0), descripcion text);
INSERT INTO almacen VALUES(1,'Pantalón',8,'Corto y sin costuras');
INSERT INTO almacen VALUES(2,'Corbata',NULL,NULL);
INSERT INTO almacen VALUES(3,'Pantalón',10,'Largo');
INSERT INTO almacen VALUES(4,'Zapatos',2,'Negros');
INSERT INTO almacen VALUES(5,'Zapatos',9,'Temporada verano');
INSERT INTO almacen VALUES(6,'Camisas',3,'Manga corta');
CREATE TABLE actividades_al (id_ primary key, nombre_ac text, empleado text, horas integer);
COMMIT;

Si sólo queremos almacener aquellas operaciones que cumplan una determinada condición como por ejemplo la de creación de tablas, nos ayudamos del comando “grep” de la siguiente manera:

root@generic:/data/data/com.example.ALMACEN/databases # sqlite3 ALMACEN_DB.db .dump | grep '^CREATE' > al_creacion_backup.txt

Estas operaciones también se pueden hacer desde la consola de sqlite de la siguiente manera. Primero dirigimos la salida a fichero y por ejemplo volcamos el contenido de la tabla almacen de la siguiente manera. Es importante que tengamos en cuenta el directorio en el que nos encontramos para seleccionar de manera adecuada el fichero. Es importante al finalizar la operación redirigir de nuevo la salida a pantalla para visualizar las operaciones a realizar.

sqlite>.output /data/data/com.example.ALMACEN/databases/tabla_almacen.txt
sqlite>.dump almacen
sqlite>.output stdout
root@generic:/data/data/com.example.ALMACEN/databases # cat almacen_backup.txt
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE almacen (_id integer primary key, nombre text, cantidad integer check (cantidad >= 0), descripcion text);
INSERT INTO almacen VALUES(1,'Pantalón',8,'Corto y sin costuras');
INSERT INTO almacen VALUES(2,'Corbata',NULL,NULL);
INSERT INTO almacen VALUES(3,'Pantalón',10,'Largo');
INSERT INTO almacen VALUES(4,'Zapatos',2,'Negros');
INSERT INTO almacen VALUES(5,'Zapatos',9,'Temporada verano');
INSERT INTO almacen VALUES(6,'Camisas',3,'Manga corta');
COMMIT;

Para leer o importar un fichero con sentencias sql a nuestra base de datos utilizamos el comando .read de la siguiente manera:

sqlite>.read /data/data/com.example.ALMACEN/databases/tabla_descatalogados.txt
sqlite>.schema descatalogados
CREATE TABLE descatalogados (_id INTEGER PRIMARY KEY, nombre TEXT, num_stock INTEGER);