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);