Menu

SQLite CLI: cómo usar la shell sqlite3 desde la terminal

Aprende a usar la shell sqlite3 desde la terminal: abrir bases de datos, ejecutar consultas, dot commands e importar o exportar datos sin salir de la consola.

Esta página incluye editores ejecutables: edita, ejecuta y ve el resultado al instante.

Qué es la CLI de SQLite

sqlite3 es la shell oficial de línea de comandos que viene con SQLite. Abre un archivo de base de datos, te muestra un prompt y te deja ejecutar SQL contra él. Sin servidor, sin login, sin archivos de configuración: solo un binario y un archivo.

La vas a usar para inspecciones rápidas, consultas puntuales, volcados de esquema e importaciones. Es la forma más rápida de hurgar en una base de datos sin tener que escribir código de aplicación.

$ sqlite3 mydata.db
SQLite version 3.45.0
Introduzca ".help" para ver las sugerencias de uso.
sqlite>

Si mydata.db aún no existe, SQLite lo creará en el momento en que hagas el primer cambio. Si ejecutas sqlite3 sin pasar ningún archivo, se abre una base de datos temporal en memoria que se descarta al salir.

Ejecutar consultas SQL desde la shell de sqlite3

Una vez dentro de la shell, escribe tu SQL y termina cada sentencia con un punto y coma. La shell espera ese punto y coma: si pulsas Enter sin haberlo puesto, simplemente verás un prompt de continuación.

El punto y coma es la señal de "ya terminé, ejecútalo". Si se te olvida, la shell se quedará ahí mirándote con el prompt ...>, esperando. Escribe ; en una línea nueva para cerrar la sentencia.

Los dot commands no son SQL

Todo lo que empieza con un . es un dot command: una instrucción dirigida a la propia shell, no al motor SQL. No llevan punto y coma y solo funcionan dentro del shell de sqlite3.

sqlite> .tables
books

sqlite> .schema books
CREATE TABLE books (
  id INTEGER PRIMARY KEY,
  title TEXT NOT NULL,
  year INTEGER
);

sqlite> .help

Los que vas a usar todo el tiempo son estos:

  • .tables — lista todas las tablas de la base de datos actual.
  • .schema [tabla] — muestra la sentencia CREATE TABLE de una tabla concreta o de todas.
  • .databases — lista los archivos de base de datos adjuntos.
  • .mode <formato> — cambia cómo se muestran los resultados de las consultas.
  • .headers on — muestra los nombres de las columnas encima de los resultados.
  • .read archivo.sql — ejecuta un archivo SQL.
  • .exit o .quit — sale del shell.

Con .help ves la lista completa. Hay decenas de comandos, pero en la práctica vas a tirar de unos diez como mucho.

Cómo dejar la salida legible

Por defecto, los resultados salen separados por pipes y sin cabeceras: vale para scripts, pero es feísimo para leerlo a ojo. Con dos dot commands lo arreglas:

sqlite> .headers on
sqlite> .mode column
sqlite> SELECT * FROM books;
id  title        year
--  -----------  ----
1   Dune         1965
2   Neuromancer  1984

Otros modos útiles:

  • .mode box — dibuja una tabla con bordes Unicode. Queda muy bien para capturas de pantalla.
  • .mode csv — valores separados por comas, ideal para canalizar la salida hacia otras herramientas.
  • .mode json — salida en JSON, un objeto por fila.
  • .mode line — una columna por línea, práctico cuando las filas son muy anchas.

Ten en cuenta que estos ajustes se reinician cada vez que abres el shell. Si quieres que sean permanentes, ponlos en un archivo ~/.sqliterc y sqlite3 lo cargará al arrancar.

Importar y exportar CSV en SQLite

La CLI trae soporte para CSV de fábrica. Cambia al modo CSV y luego usa .import para cargar un archivo en una tabla:

sqlite> .mode csv
sqlite> .import authors.csv authors
sqlite> SELECT * FROM authors LIMIT 3;

Si la tabla no existe, .import la crea usando la primera fila como nombres de columna. Si ya existe, la primera fila se toma como datos, salvo que pases --skip 1.

En el sentido contrario, redirige la salida a un archivo:

sqlite> .headers on
sqlite> .mode csv
sqlite> .output books.csv
sqlite> SELECT * FROM books;
sqlite> .output stdout

.output filename redirige todos los resultados de las consultas siguientes a ese archivo, hasta que vuelvas a stdout con .output stdout. El mecanismo es el mismo, ya sea que estés exportando a CSV, JSON o haciendo un volcado del esquema.

Ejecutar archivos SQL en SQLite

Cuando tienes algo más largo que un par de sentencias, lo mejor es guardar el SQL en un archivo y ejecutarlo. Desde el shell de sqlite3:

sqlite> .read setup.sql

O directamente desde tu terminal de siempre, sin necesidad de entrar al shell de sqlite3:

$ sqlite3 mydata.db < setup.sql
$ sqlite3 mydata.db "SELECT count(*) FROM books;"

La segunda forma ejecuta una sola consulta y sale — ideal para scripts de shell o comprobaciones rápidas. Combínala con ajustes de .mode mediante la opción -cmd cuando necesites darle formato a la salida:

$ sqlite3 -header -column mydata.db "SELECT * FROM books;"

Inspeccionar una base de datos desconocida

Cuando alguien te pasa un archivo .db y no tienes ni idea de lo que contiene, esta es la rutina que conviene seguir:

$ sqlite3 mystery.db
sqlite> .tables
sqlite> .schema
sqlite> .indexes
sqlite> SELECT count(*) FROM some_table;

.schema sin argumentos vuelca todos los CREATE TABLE, CREATE INDEX y CREATE TRIGGER del archivo. .indexes muestra los índices de cada tabla. Cinco minutos en la shell te dicen más sobre una base de datos que cualquier README.

Si lo que buscas es una instantánea textual completa para recrearla en otro lado, tira de .dump:

sqlite> .output backup.sql
sqlite> .dump
sqlite> .output stdout

Eso genera un script SQL que recrea la base de datos por completo —esquema y datos— cuando se lo pasas de vuelta a sqlite3.

Salir de sqlite3

Tienes tres formas de salir, todas equivalentes:

sqlite> .exit
sqlite> .quit

O pulsa Ctrl+D en macOS y Linux (Ctrl+Z y luego Enter en Windows). Tus cambios ya están guardados: SQLite confirma cada sentencia en cuanto se ejecuta, salvo que hayas abierto una transacción de forma explícita.

Siguiente paso: herramientas gráficas para SQLite

La CLI es rápida y se presta a scripts, pero a veces conviene navegar las tablas a golpe de clic, ordenar columnas y editar filas de manera visual. Existen varias herramientas gráficas decentes para SQLite, y de eso va la próxima página.

Preguntas frecuentes

¿Cómo abro una base de datos con el CLI de SQLite?

Ejecuta sqlite3 mydata.db en la terminal. Si el archivo no existe, SQLite lo crea en cuanto escribes la primera tabla. Si lanzas sqlite3 sin nombre de archivo, se abre una base de datos temporal en memoria que se pierde al salir.

¿Cómo salgo de la shell sqlite3?

Escribe .exit o .quit y pulsa Enter. Las dos hacen lo mismo. En la mayoría de sistemas también puedes cerrar la shell con Ctrl+D (o Ctrl+Z y luego Enter en Windows).

¿Qué son los dot commands en SQLite?

Son comandos propios de la shell que empiezan por . — como .tables, .schema, .mode o .import. No son SQL, sino instrucciones para el CLI, así que no llevan punto y coma al final y solo funcionan dentro de la shell sqlite3.

¿Cómo ejecuto un archivo SQL desde el CLI de SQLite?

Desde dentro de la shell usa .read archivo.sql, o bien redirígelo desde fuera con sqlite3 mydata.db < archivo.sql. En ambos casos las sentencias se ejecutan en orden contra la base de datos abierta.

Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR