Entrada

Command Line For SQLite3 (línea de comandos) para ejecutar SQL

SQLite incluye una herramienta de línea de comandos simple llamado sqlite3, que permite a los usuarios interactuar directamente con bases de datos SQLite y ejecutar instrucciones SQL. Esta utilidad es especialmente útil para realizar pruebas rápidas, consultas, y tareas de administración sin necesidad de una interfaz gráfica.

Al ejecutar el comando sqlite3 seguido del nombre de una base de datos ( por ejemplo: mi_base_de_datos.db ), el programa abrirá la base de datos especificada o la creará si no existe. A continuación, mostrará un breve mensaje de bienvenida y quedará en espera de que el usuario indtroduzca instrucciones SQL.

¿Qué es la línea de comandos de SQLite3?

La interfaz de línea de comandos (Command Line Interface) es un programa que permite interactuar con bases de datos SQLite mediante comandos SQL.

Este programa está disponible para los principales sistemas operativos ( Windows, macOS y Linux ) y puede ser descargado gratuitamente desde su sitio web oficial

Instalar el Programa

La instalación de SQLite3 es sencilla y varía ligeramente dependiendo del sistema operativo:

Windows

  1. Ve al sitio oficial de SQLite: https://www.sqlite.org/download.html
  2. Descarga el archivo “sqlite-tools” correspondiente a tu sistema (por ejemplo, sqlite-tools-win32-x86).
  3. Extrae el archivo .zip en una carpeta, por ejemplo C:\sqlite.
  4. Abre la terminal ( símbolo del sistema o PowerShell ), navega a esa carpeta y ejecuta sqlite3 para iniciar el programa.

Opcional: Agrega la ruta de SQLite a las variables de entorno para poder usarlo desde cualquier ubicación del sistema.

macOS

Puedes instalar SQLite fácilmente usando Homebrew:

1
brew install sqlite

Luego, ejecuta el comando sqlite3 en la terminal para comenzar.

Linux ( Debian/Ubuntu )

En la mayoría de las distribuciones Linux, SQLite está disponible en los repositorios oficiales:

1
2
sudo apt update
sudo apt install sqlite3

Después, solo debes escribir sqlite3 en la terminal para iniciar la herramienta.

¿Qué podemos hacer con la línea de comandos de SQLite3?

Una vez iniciado el programa sqlite3, puedes revisar diversas operaciones sobre bases de datos SQLite, tales como:

  • Crear nuevas bases de datos o abrir bases existentes.
  • Ejecutar sentencias SQL.
  • Crear y modificar tablas y otros objetos de la base de datos.
  • Importar y exportar información ( por ejemplo, en formato CSV ).
  • Ejecutar archivos .sql que contengan múltiples instrucciones.
  • Usar comandos internos especiales ( comienzan con . ) para facilitar la gestión y visualización de datos.

Crear y abrir Bases de Datos

Para crear una base de datos, debes abrir una nueva Terminal o ventana de símbolo del sistema ( CMD ) y escribir el nombre del programa seguido del nombre del archivo de base de datos:

1
sqlite3 sistema.db

Si la base de datos no existe, creará el archivo de base de datos una vez que tengamos como mínimo creada una tabla.

El comando anterior abre un entorno interactivo y se ve de la siguiente manera:

1
2
3
SQLite version 3.40.1 2022-12-28 14:03:47
Enter ".help" for usage hints.
sqlite>

Ahora puedes ejecutar instrucciones SQL.

Crear Tablas

Ahora en la sesión interactiva ejecutamos una sentencia SQL para crear una tabla sencilla de ejemplo:

1
CREATE TABLE usuarios (id INT, nombre TEXT);

Creada una tabla, se crea el archivo de base de dato.

sqlite crear una base de datos

Insertar Datos

Ahora puedes crear nuevos registros:

  • 1
    2
    
    INSERT INTO usuarios (id, nombre) VALUES (1, 'marco');
    INSERT INTO usuarios (id, nombre) VALUES (2, 'marcelo');
    
  • 1
    2
    3
    4
    5
    
    sqlite> INSERT INTO usuarios (id, nombre)
       ...> VALUES (1, 'marco');
    
    sqlite> INSERT INTO usuarios (id, nombre)
       ...> VALUES (2, 'marcelo');
    

Consultar información

Para ver los registros existentes con el comando SELECT:

  • 1
    
    SELECT * FROM usuarios;
    
  • 1
    2
    3
    
    sqlite> SELECT * FROM usuarios;
    1|marco
    2|marcelo
    

Actualizar Registros

Modificar datos existentes con el comando UPDATE:

  • 1
    
    UPDATE usuarios SET nombre = 'alonso' WHERE nombre = 'marcelo';
    
  • 1
    
    sqlite> UPDATE usuarios SET nombre = 'alonso' WHERE nombre = 'marcelo';
    

Eliminar Registros

Borrar registros específicos:

  • 1
    
    DELETE FROM usuarios WHERE nombre = 'marco';
    
  • 1
    
    sqlite> DELETE FROM usuarios WHERE nombre = 'marco';
    

Para salir del programa sqlite3 escribe el comando .q o con el atajo Ctrl + D y luego Enter.

Comandos Especiales

La mayoría de las veces, sqlite3 solo lee líneas de entrada y las pasa a la biblioteca SQLite para su ejecución. Pero las líneas de entradas que comienzan con un punto (.) son interceptadas e interpretadas por el propio programa sqlite3.

Estos comandos de puntos se utilizan normalmente para cambiar el formato de salida, ver información sobre la base de datos o manejar ciertos aspectos del entorno de ejecución. Para ver una lista de los comandos de puntos disponibles, puede introducir el comando .help sin argumentos o help TOPIC para obtener información detallada sobre algún TOPIC en específico. Aquí te dejo una tabla con algunos comandos especiales disponibles.

ComandoDescripciónValor predeterminado
.archiveAdministrar archivos SQL..
.authMuestra devoluciones de llamadasOFF
.backup ?DB? FILECrea un respaldo de la DB actual en un FILE indicado.MAIN
.bail ON | OFFDetener después de un error.OFF
.binary ON | OFFActiva o desactiva la salida binaria.ON
.cd DIRCambiar de ubicación a DIR especificado..
.changes ON | OFFMostrar número de filas afectadas por SQL.ON
.clone NEWDBClona la base de datos actual en NEWDB (directorio).
.databasesLista las bases de datos adjuntas.

Esquema de la base de datos

Para ver el esquema, donde figuran las sentencias SQL ejecutadas en la creación de tablas, ejecuta el comando .schema o .fullschema:

  • 1
    
    .fullschema
    
  • 1
    2
    3
    
    sqlite> .fullschema
    CREATE TABLE usuarios (id INT, nombre TEXT);
    /* No STAT tables available */
    

Ver las tablas existentes

Para listar las tablas existentes en la base de datos, ejecuta el siguiente comando especial de punto:

1
.tables

El comando anterior es equivalente a configurar el modo lista y luego ejecutar la siguiente consulta:

1
2
3
SELECT name FROM sqlite_schema 
WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
ORDER BY 1;

Funciones de E/S de archivos

La función readfile(x) lee todo el contenido de un archivo y devuelve ese contenido como un BLOB. Esto se puede usar para cargar contenido en una tabla. Por ejemplo:

1
2
3
CREATE TABLE imagenes(nombre TEXT,tipo TEXT,imagen BLOB);
INSERT INTO imagenes(nombre,tipo,imagen)
  VALUES('icon_folder','png',readfile('C:\\Users\\home\\Pictures\\folder.png'));

La función writefile(x, y) crea un archivo llamado (x) y escribe el BLOB (y) y devuelve el número de bytes escritos:

1
SELECT writefile('folder.png', imagen) FROM imagenes WHERE nombre = 'icon_folder';

Analizar Archivos CSV con SQL

La línea de comandos de sqlite3 permite importar archivos CSV fácilmente y consultarlos como si fueran una base de datos. Esto es útil para analizar datos sin necesidad de convertirlos a otro formato o cargarlos en una base de datos existente.

👉 ¡Ideal para analizar datos rápido sin herramientas adicionales!

Para hacer el análisis de un archivo CSV, abre una terminal y ejecuta sqlite3 sin argumentos. Esto iniciará SQLite en la memoria en vez de crear una base de datos en el disco, lo que significa que los datos se cargarán solo mientras la sesión esté activa. A continuación tienes los comandos que debes ejecutar para importar el CSV:

  • 1
    2
    
    .mode csv
    .import ventas.csv ventas
    
  • Copia y guarda este contenido en un archivo llamado ventas.csv:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    Producto,Categoría,Precio,Cantidad,Total,Fecha_Venta
    Laptop,Electrónica,1200000,2,2400000,2023-01-15
    Teléfono,Electrónica,850000,1,850000,2023-02-20
    Teclado,Accesorios,46000,3,138000,2023-03-10
    Mouse,Accesorios,25500,2,51000,2023-04-05
    Monitor,Electrónica,300000,1,300000,2023-05-12
    Impresora,Oficina,200000,1,200000,2023-06-25
    Escritorio,Muebles,450000,1,450000,2023-07-30
    Silla de oficina,Muebles,220000,2,440000,2023-08-18
    Cámara,Electrónica,670000,1,670000,2023-09-22
    Auriculares,Accesorios,75000,4,300000,2023-10-10
    Laptop,Electrónica,1300000,1,1300000,2023-11-15
    Teléfono,Electrónica,900000,2,1800000,2023-12-05
    Teclado,Accesorios,50000,1,50000,2024-01-08
    Mouse,Accesorios,30000,3,90000,2024-02-14
    Monitor,Electrónica,310000,2,620000,2024-03-20
    Impresora,Oficina,215000,1,215000,2024-04-02
    Escritorio,Muebles,480000,1,480000,2024-05-09
    Silla de oficina,Muebles,250000,3,750000,2024-06-15
    Cámara,Electrónica,700000,2,1400000,2024-07-21
    Auriculares,Accesorios,81000,1,81000,2024-08-30
    

Consultas SQL rápidas sobre el CSV

💡 Ejemplo: Ver las primeras 5 filas:

1
SELECT * FROM ventas LIMIT 5;

💡 Ejemplo: Total de ventas por categoría:

1
2
3
SELECT 'Categoría', SUM(Total) AS Ventas_Totales
FROM ventas
GROUP BY 'Categoría';

💡 Ejemplo: Ventas en enero de 2024:

1
SELECT * FROM ventas WHERE Fecha_Venta LIKE '2024-01%';

💡 Ejemplo: Productos más caros vendidos:

1
SELECT * FROM ventas ORDER BY Precio DESC LIMIT 5;

Guardar los resultados en un nuevo CSV

Si después de analizar los datos quieres guardar los resultados en otro archivo CSV, usa:

1
2
3
4
5
6
.mode csv
.output resumen.csv
SELECT 'Categoría', SUM(Total) AS Ventas_Totales
FROM ventas
GROUP BY 'Categoría';
.output stdout -- Volver a cambiar la salida al modo normal

Esto creará un archivo resumen.csv con el total de ventas por categoría.

Configurar SQLite CLI

Para definir opciones de forma permanente al ejecutar sqlite3, crea un archivo de configuración .sqliterc en el directorio del usuario. Ejemplo:

1
nano ~/.sqliterc

Luego añade las opciones que quieres que se apliquen siempre:

1
2
3
4
.headers on
.mode table
.nullvalue NULL
PRAGMA foreign_keys = ON;

Al abrir nuevamente el programa se aplican esas configuraciones.

aplicar las configuraciones aplicar las configuraciones

La línea de comandos de SQLite3 es una herramienta ligera que te permite administrar bases de datos de forma eficiente, sin necesidad de instalar programas gráficos o servidores adicionales. Es ideal para quienes están aprendiendo SQL, ya que ofrece una forma rápida y directa de practicar y ejecutar consultas.

Esta entrada está licenciada bajo CC BY 4.0 por el autor.