
SQLite en Debian 13 — Guía Completa
SQLite es una base de datos ligera, rápida y auto-contenida que viene integrada en la mayoría de los sistemas operativos modernos. En Debian 13 “Trixie”, instalarla y comenzar a trabajar con ella es cuestión de minutos. En este tutorial aprenderás desde cero a dominar SQLite tanto desde la terminal como desde una interfaz gráfica (DB Browser for SQLite), con ejemplos, buenas prácticas y optimizaciones reales.
Presentación y objetivos
Este tutorial está pensado para usuarios y desarrolladores que deseen dominar SQLite en Debian 13, abarcando desde su instalación, comandos esenciales y configuración, hasta consejos de seguridad, rendimiento y migraciones.
- Aprender a instalar y configurar SQLite en Debian 13.
- Conocer los comandos fundamentales del shell
sqlite3
. - Trabajar con bases de datos, tablas, consultas y transacciones.
- Explorar DB Browser for SQLite como herramienta visual.
- Aplicar buenas prácticas en modelado y rendimiento.
0.1 ¿Qué aprenderás?
- Crear, consultar y gestionar bases de datos SQLite desde la terminal.
- Usar herramientas gráficas para manipular datos sin escribir SQL manualmente.
- Entender los PRAGMA más importantes para optimizar rendimiento y consistencia.
- Realizar copias de seguridad seguras y migraciones entre sistemas.
0.2 Requisitos previos
Para seguir este tutorial, necesitas:
- Un sistema operativo Debian 13 Trixie actualizado.
- Acceso a una terminal con privilegios sudo.
- Conocimientos básicos de comandos
apt
y estructura de archivos Linux.
0.3 Público objetivo y casos de uso
Este contenido está orientado a:
- Estudiantes y autodidactas de programación o administración Linux.
- Desarrolladores que necesiten una base de datos embebida o ligera.
- Administradores que deseen auditar o analizar datos locales rápidamente.
- Proyectos de escritorio, IoT o scripts automatizados que no requieren un motor SQL complejo.
1. Introducción a SQLite
1.1 ¿Qué es SQLite?
SQLite es una biblioteca en C que implementa un motor de base de datos SQL sin servidor, totalmente contenido en un único archivo. A diferencia de MySQL o PostgreSQL, no requiere demonios en segundo plano ni configuración previa: cada base de datos es simplemente un archivo .db
que puede moverse, copiarse o versionarse fácilmente.
1.2 Ventajas y limitaciones
Ventajas y limitaciones de SQLiteVentajas | Limitaciones |
---|---|
Instalación mínima: un solo binario (sqlite3 ). | No está pensado para sistemas con miles de conexiones concurrentes. |
Compatible con la mayoría del estándar SQL-92. | No soporta usuarios ni permisos granulares dentro del motor. |
Soporta transacciones ACID completas. | Requiere control externo para backups y replicación. |
Extremadamente portátil: un archivo, multiplataforma. | No tiene procedimientos almacenados complejos. |
1.3 Casos de uso reales
- Android: cada aplicación usa una base SQLite para su almacenamiento local.
- Firefox y Chrome: almacenan historial, cookies y configuración.
- Aplicaciones Linux: GNOME, Kdenlive, LibreOffice, etc.
- IoT y Raspberry Pi: ideal para sensores y dispositivos offline.
1.4 Arquitectura
SQLite se compone de un motor SQL embebido que lee y escribe directamente en archivos de disco. Todo el procesamiento ocurre en el mismo proceso del programa cliente, lo que reduce la latencia y simplifica la gestión.
2. Características clave de SQLite
2.1 Cumplimiento SQL
SQLite implementa gran parte del estándar SQL-92 e incluye soporte para subconsultas, vistas, joins, triggers e índices. A pesar de su ligereza, es una base de datos relacional completa.
2.2 Transacciones ACID
SQLite es totalmente ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad), incluso en sistemas embebidos. Cada escritura se asegura con journaling, protegiendo la integridad ante fallos o cortes eléctricos.
2.3 Tipado por afinidad
El sistema de tipos de SQLite no es estricto. En lugar de tipos fijos, utiliza un modelo de afinidad, donde los valores se almacenan según el tipo declarado de la columna, pero pueden aceptar otros tipos compatibles.
2.4 Vistas, índices y triggers
SQLite soporta la creación de vistas personalizadas, índices simples o compuestos y triggers para ejecutar acciones automáticas ante inserciones, actualizaciones o eliminaciones.
CREATE VIEW usuarios_mayores AS SELECT nombre, edad FROM usuarios WHERE edad >= 18; CREATE INDEX idx_usuarios_nombre ON usuarios(nombre); CREATE TRIGGER log_inserciones AFTER INSERT ON usuarios BEGIN INSERT INTO auditoria (accion, fecha) VALUES ('Inserción', datetime('now')); END;
2.5 Soporte Unicode y portabilidad
SQLite almacena texto en UTF-8 o UTF-16, compatible con cualquier idioma. Además, al ser un único archivo binario, puede moverse entre Linux, Windows o macOS sin perder compatibilidad ni estructura.
3. Instalación en Debian 13
3.1 Actualizar índices de paquetes
Antes de instalar, actualiza la lista de paquetes del sistema:
sudo apt update
3.2 Instalar el intérprete CLI
Instala el paquete principal de SQLite con:
sudo apt install sqlite3
Este comando instalará el binario sqlite3
y sus dependencias.
3.3 Verificar la instalación
sqlite3 --version
Deberías ver una salida similar a:
3.45.2 2025-02-10 12:15:14 ...
3.4 Paquetes relacionados y páginas de manual
Archivos instalados por SQLiteRuta | Descripción |
---|---|
/usr/bin/sqlite3 | Ejecutable principal del intérprete CLI. |
/usr/lib/x86_64-linux-gnu/libsqlite3.so | Biblioteca compartida usada por otras apps. |
/usr/share/man/man1/sqlite3.1.gz | Página del manual (consulta con man sqlite3 ). |
sqlite3 prueba.db
para abrir una base nueva. Si no existe, SQLite la creará automáticamente.4. Primeros pasos desde la terminal (sqlite3)
El corazón de SQLite es su intérprete de comandos sqlite3
. Desde aquí podrás crear bases de datos, ejecutar consultas SQL, importar/exportar datos y realizar copias de seguridad. Todo ello sin depender de un servidor ni configuración adicional.
4.1 Crear una base de datos (.db)
Para crear una nueva base de datos, simplemente escribe en la terminal:
sqlite3 mi_base.db
Esto abrirá el shell interactivo de SQLite con el prompt:
sqlite>
Si el archivo mi_base.db
no existía, se creará automáticamente en el directorio actual. Puedes cerrar el shell en cualquier momento con:
.quit
sqlite3 /home/javier/sqlite/mi_base.db
.4.2 Entrar y salir del shell de sqlite3
Una vez dentro, el prompt cambiará a sqlite>
. Puedes ejecutar comandos SQL normales y también comandos internos del intérprete (los que comienzan con un punto “.”).
Comando | Descripción |
---|---|
.help | Muestra todos los comandos internos disponibles. |
.databases | Lista las bases de datos abiertas (por defecto, una). |
.tables | Muestra las tablas existentes en la base. |
.schema [tabla] | Muestra la definición SQL de una tabla o de toda la base. |
.mode column | Activa el formato de salida en columnas legibles. |
.headers on | Muestra los nombres de columnas en los resultados. |
.quit | Salir del shell (también .exit o Ctrl+D). |
.headers on
y .mode column
para visualizar las tablas correctamente.4.3 Crear tablas, insertar datos y consultar
Crear una tabla de ejemplo
CREATE TABLE usuarios ( id INTEGER PRIMARY KEY AUTOINCREMENT, nombre TEXT NOT NULL, edad INTEGER, correo TEXT );
Verifica que la tabla se creó correctamente:
.tables
Para ver su estructura completa:
.schema usuarios
Insertar datos
INSERT INTO usuarios (nombre, edad, correo) VALUES ('Ana', 30, 'ana@example.com'); INSERT INTO usuarios (nombre, edad, correo) VALUES ('Juan', 25, 'juan@example.com'); INSERT INTO usuarios (nombre, edad, correo) VALUES ('Lucía', 35, 'lucia@example.com');
Consultar datos
.headers on .mode column SELECT * FROM usuarios;
Salida esperada:
id nombre edad correo -- ------- ---- ----------------- 1 Ana 30 ana@example.com 2 Juan 25 juan@example.com 3 Lucía 35 lucia@example.com
Filtrar y ordenar
SELECT nombre, edad FROM usuarios WHERE edad >= 30 ORDER BY edad DESC;
select
como SELECT
son válidos.4.4 Actualizar y eliminar registros
Actualizar datos
UPDATE usuarios SET edad = 31 WHERE nombre = 'Ana';
Eliminar registros
DELETE FROM usuarios WHERE id = 2;
Confirma el resultado:
SELECT * FROM usuarios;
Eliminar una tabla completa
DROP TABLE IF EXISTS usuarios;
DROP TABLE
elimina toda la estructura y los datos de la tabla. No se puede deshacer.4.5 Importar y exportar CSV
SQLite incluye soporte integrado para leer y escribir archivos CSV, lo que resulta útil para intercambiar datos con hojas de cálculo o sistemas externos.
Importar CSV
Supongamos que tienes un archivo usuarios.csv
con el siguiente contenido:
nombre,edad,correo Pedro,40,pedro@example.com Laura,28,laura@example.com
Importa el archivo con los comandos:
.mode csv .import usuarios.csv usuarios
SQLite leerá el archivo y agregará los registros automáticamente a la tabla usuarios
.
Exportar CSV
Para exportar el contenido de una tabla a un archivo CSV:
.headers on .mode csv .output export_usuarios.csv SELECT * FROM usuarios; .output stdout
Esto generará un archivo export_usuarios.csv
en tu carpeta actual con el contenido de la tabla.
Modo | Descripción |
---|---|
list | Salida en formato de lista, separada por “|”. |
column | Formato tabulado y legible (ideal para consola). |
csv | Formato CSV compatible con Excel, LibreOffice, etc. |
tabs | Campos separados por tabulaciones. |
html | Salida como tabla HTML (útil para informes web). |
4.6 Redirección de salida y ejecución de scripts
Guardar resultados en un archivo
.output resultados.txt SELECT nombre, edad FROM usuarios; .output stdout
El resultado se guardará en el archivo resultados.txt
.
Ejecutar scripts SQL externos
También puedes ejecutar archivos SQL completos sin escribir cada comando manualmente. Por ejemplo, si tienes un archivo estructura.sql
:
CREATE TABLE productos ( id INTEGER PRIMARY KEY, nombre TEXT, precio REAL ); INSERT INTO productos (nombre, precio) VALUES ('Teclado', 25.50), ('Ratón', 18.90);
Ejecuta el script con:
.read estructura.sql
Y luego comprueba las tablas:
.tables
.sql
son ideales para automatizar configuraciones o migraciones. Puedes crear plantillas y ejecutarlas en diferentes proyectos fácilmente.4.7 Resumen de comandos útiles
Resumen de comandos sqlite3Comando | Función |
---|---|
.tables | Lista todas las tablas en la base de datos actual. |
.schema | Muestra el código SQL que define una tabla. |
.headers on | Activa los encabezados de columna en los resultados. |
.mode column | Usa formato de columnas legibles. |
.output archivo.txt | Redirige la salida a un archivo. |
.read script.sql | Ejecuta un archivo SQL externo. |
.backup backup.db | Crea una copia de seguridad completa. |
.quit | Sale del intérprete SQLite. |
Con estos comandos básicos dominarás la línea de comandos de SQLite y podrás gestionar tus bases de datos sin depender de interfaces gráficas. Es una herramienta ligera, poderosa y perfecta para automatizar tareas en Debian 13.
5. Modelado y buenas prácticas de esquema
El diseño correcto de la estructura de tu base de datos es esencial para mantener la integridad, el rendimiento y la escalabilidad. SQLite no impone tantas restricciones como otros motores, por lo que el modelo depende en gran medida de tu disciplina como desarrollador.
5.1 Claves primarias e integridad referencial
Siempre define una PRIMARY KEY en cada tabla. SQLite utiliza un identificador especial llamado ROWID
por defecto, pero es recomendable declararlo explícitamente para mejorar la legibilidad y las relaciones.
CREATE TABLE clientes ( id INTEGER PRIMARY KEY, nombre TEXT NOT NULL, telefono TEXT, email TEXT UNIQUE );
Para relaciones entre tablas, usa FOREIGN KEYS y activa la integridad referencial:
PRAGMA foreign_keys = ON; CREATE TABLE pedidos ( id INTEGER PRIMARY KEY, cliente_id INTEGER, fecha TEXT, total REAL, FOREIGN KEY (cliente_id) REFERENCES clientes(id) );
PRAGMA foreign_keys = ON;
al inicio de tu conexión o script.5.2 Índices: cuándo y cómo crearlos
Los índices aceleran las consultas que usan WHERE
o JOIN
sobre columnas frecuentes, pero también consumen espacio y ralentizan las escrituras. Úsalos con criterio.
CREATE INDEX idx_clientes_nombre ON clientes(nombre); CREATE INDEX idx_pedidos_fecha ON pedidos(fecha);
Puedes inspeccionar el uso de índices con:
EXPLAIN QUERY PLAN SELECT * FROM clientes WHERE nombre = 'Ana';
5.3 Normalización ligera y convenciones
- Usa nombres en
snake_case
y en singular:usuario
,producto
. - Evita redundancias de datos innecesarias.
- Usa
INTEGER
para claves yTEXT
para cadenas. - Define
NOT NULL
yDEFAULT
siempre que sea posible.
5.4 Tipado por afinidad
Tipos de datos y afinidad en SQLiteTipo declarado | Afinidad | Ejemplo |
---|---|---|
INTEGER | Numérico entero | 42 |
REAL | Numérico decimal | 3.1416 |
TEXT | Cadena de texto | 'Debian' |
BLOB | Binario | Archivos, imágenes, etc. |
NULL | Sin valor definido | NULL |
INTEGER
y SQLite lo aceptará. Aun así, define los tipos correctamente por claridad y rendimiento.6. Rendimiento y confiabilidad
6.1 Transacciones
Agrupar operaciones dentro de transacciones acelera las escrituras y garantiza la coherencia del conjunto de datos:
BEGIN TRANSACTION; INSERT INTO pedidos (cliente_id, fecha, total) VALUES (1, '2025-03-10', 59.90); UPDATE clientes SET telefono = '+34 612 345 678' WHERE id = 1; COMMIT;
Si algo falla, usa ROLLBACK;
para revertir los cambios.
6.2 PRAGMAs esenciales
Los PRAGMAs son configuraciones internas que ajustan el comportamiento del motor de SQLite. Puedes consultarlos o modificarlos según tu entorno.
PRAGMAs más utilizadosPRAGMA | Descripción | Valores recomendados |
---|---|---|
foreign_keys | Activa la integridad referencial. | ON |
journal_mode | Define el modo de journaling. | WAL (Write-Ahead Log) |
synchronous | Controla cuándo se sincroniza con disco. | FULL o NORMAL |
cache_size | Determina el tamaño del caché interno. | Depende del entorno (por defecto 2000) |
PRAGMA foreign_keys = ON; PRAGMA journal_mode = WAL; PRAGMA synchronous = FULL;
WAL
para mejorar la concurrencia de lectura/escritura y synchronous=FULL
para garantizar la integridad ante cortes de energía.6.3 EXPLAIN QUERY PLAN
Esta sentencia permite analizar cómo se ejecutará una consulta:
EXPLAIN QUERY PLAN SELECT * FROM pedidos WHERE cliente_id = 1;
Si ves la palabra SCAN
sin USING INDEX
, significa que la consulta recorre toda la tabla y puede mejorarse con un índice.
6.4 Escrituras masivas
Para insertar miles de filas, agrúpalas en una única transacción:
BEGIN; INSERT INTO registros (dato) VALUES ('A'); INSERT INTO registros (dato) VALUES ('B'); ... COMMIT;
Esto reduce drásticamente el tiempo de escritura, ya que se evita sincronizar el disco tras cada inserción.
6.5 Vacuum y mantenimiento
SQLite no libera automáticamente el espacio de las filas eliminadas. Usa VACUUM;
para compactar la base de datos:
VACUUM;
También puedes reindexar todas las tablas con:
REINDEX;
8. Seguridad y buenas prácticas de despliegue
8.1 Permisos de archivos y rutas seguras
SQLite guarda toda la información en un solo archivo. Por ello, protege los permisos correctamente:
chmod 600 /home/javier/sqlite/produccion.db chown javier:javier /home/javier/sqlite/produccion.db
8.2 Evitar exposición directa del .db
Nunca coloques el archivo .db
dentro del directorio público de un servidor web (/var/www/html
o similar).
8.3 Cifrado y protección adicional
SQLite no incluye cifrado por defecto, pero existen extensiones como SQLCipher que añaden encriptación AES-256 transparente.
-- En SQLCipher: PRAGMA key = 'mi_clave_segura';
Otra alternativa es usar particiones cifradas con LUKS o herramientas como gocryptfs
.
8.4 Integridad y recuperación
Verifica la integridad de tu base periódicamente con:
PRAGMA integrity_check;
Y repara inconsistencias con una copia limpia si es necesario. También puedes automatizar backups con cron:
sqlite3 produccion.db ".backup '/backups/produccion_$(date +%F).db'"
9. Herramienta gráfica: DB Browser for SQLite
9.1 Instalación
En Debian 13, DB Browser está disponible en los repositorios oficiales:
sudo apt install sqlitebrowser
9.2 Interfaz principal
Al abrir la aplicación verás varias pestañas clave:
Pestañas de DB BrowserPestaña | Función |
---|---|
Database Structure | Muestra las tablas, vistas e índices. |
Browse Data | Permite explorar y editar registros. |
Execute SQL | Ejecuta consultas manuales. |
Edit Pragmas | Configura PRAGMAs desde interfaz. |
9.3 Crear y editar tablas
Puedes crear nuevas tablas desde el menú “New Table”, definiendo nombres de columna y tipos de dato. Al finalizar, haz clic en Write Changes para guardar los cambios en disco.
9.4 Importar y exportar datos
DB Browser facilita la importación y exportación en múltiples formatos:
- CSV (valores separados por coma)
- SQL (script de recreación)
- JSON y XML
Para importar: File → Import → Table from CSV. Para exportar: File → Export → Table to SQL File.
9.5 Ejecutar scripts SQL
En la pestaña Execute SQL puedes ejecutar bloques de código o abrir archivos completos:
CREATE TABLE productos ( id INTEGER PRIMARY KEY, nombre TEXT, precio REAL ); INSERT INTO productos (nombre, precio) VALUES ('Monitor 24"', 159.99), ('Teclado mecánico', 79.90);
Después, pulsa Execute All para ejecutar todo el script.
11. Casos prácticos
Veamos algunos ejemplos útiles de uso real en Debian 13, donde SQLite brilla por su simplicidad y rendimiento local.
11.1 Mini CRUD de usuarios
Este ejemplo crea una tabla de usuarios, agrega datos, actualiza registros y los elimina.
-- Crear tabla CREATE TABLE usuarios ( id INTEGER PRIMARY KEY AUTOINCREMENT, nombre TEXT NOT NULL, correo TEXT UNIQUE, edad INTEGER ); -- Insertar registros INSERT INTO usuarios (nombre, correo, edad) VALUES ('María', 'maria@example.com', 28), ('Luis', 'luis@example.com', 34); -- Consultar SELECT * FROM usuarios; -- Actualizar UPDATE usuarios SET edad = 29 WHERE nombre = 'María'; -- Eliminar DELETE FROM usuarios WHERE id = 2;
BEGIN ... COMMIT;
, aseguras la atomicidad de las operaciones.11.2 Registro de logs o telemetría local
SQLite es perfecto para guardar eventos o métricas en dispositivos offline.
CREATE TABLE logs ( id INTEGER PRIMARY KEY AUTOINCREMENT, fecha TEXT DEFAULT (datetime('now')), nivel TEXT, mensaje TEXT ); INSERT INTO logs (nivel, mensaje) VALUES ('INFO', 'Sistema iniciado'), ('WARNING', 'Uso de CPU alto'), ('ERROR', 'Proceso detenido');
Puedes ver los últimos 10 registros con:
SELECT * FROM logs ORDER BY fecha DESC LIMIT 10;
11.3 Catálogo o inventario simple con índices
CREATE TABLE inventario ( id INTEGER PRIMARY KEY, producto TEXT NOT NULL, stock INTEGER, precio REAL ); CREATE INDEX idx_inventario_producto ON inventario(producto); INSERT INTO inventario (producto, stock, precio) VALUES ('Portátil Lenovo', 10, 999.90), ('Monitor 27"', 7, 189.50), ('Teclado mecánico', 15, 79.99); SELECT producto, stock FROM inventario WHERE stock < 10;
producto
o stock
aceleran las consultas, especialmente cuando crece el volumen de registros.12. Troubleshooting (Errores comunes)
SQLite es muy estable, pero algunos errores son frecuentes. Aquí tienes una guía rápida de diagnóstico.
Errores frecuentes y solucionesError | Causa | Solución |
---|---|---|
no such table: ... | Intentas consultar una tabla inexistente o en la base equivocada. | Ejecuta .tables o revisa el archivo .db correcto. |
database is locked | La base está en uso por otro proceso o DB Browser aún no liberó el archivo. | Cierra instancias abiertas. Usa PRAGMA journal_mode=WAL; para concurrencia. |
UNIQUE constraint failed | Intentas insertar valores duplicados en una columna UNIQUE. | Verifica claves únicas con SELECT DISTINCT columna . |
Problemas con CSV | Delimitadores o codificación incorrecta (UTF-8). | Guarda el CSV en UTF-8 y usa .mode csv antes de importar. |
malformed database schema | Modificación manual o fallo en migración. | Exporta a SQL (.dump ) y reconstruye la base. |
12.5 Diferencias por PRAGMAs
Si una consulta no se comporta igual entre entornos, revisa tus PRAGMA
. El modo WAL, la sincronización y las claves foráneas pueden alterar resultados.
PRAGMA foreign_keys; PRAGMA journal_mode; PRAGMA synchronous;
13. Checklist final de producción
Antes de usar SQLite en entornos reales o compartir tu base de datos, repasa estos puntos clave:
- ✅ Integridad activada:
PRAGMA foreign_keys = ON;
- ✅ Modo WAL habilitado para concurrencia y rendimiento.
- ✅ Backups verificados con
.backup
osqlite3 ".dump"
. - ✅ Permisos 600 en el archivo
.db
(solo propietario). - ✅ Ruta segura fuera del directorio público web.
- ✅ Vacuum ejecutado tras grandes eliminaciones.
- ✅ PRAGMA integrity_check; pasado sin errores.
13.4 Automatización de copias
Puedes programar un cron diario para guardar copias automáticas:
0 3 * * * sqlite3 /home/javier/sqlite/produccion.db \ ".backup '/home/javier/backups/produccion_$(date +\%F).db'"
14. Resumen y siguientes pasos
14.1 Recapitulación
SQLite en Debian 13 ofrece una solución de base de datos rápida, ligera y sin mantenimiento. Su filosofía “cero configuración” lo convierte en un aliado perfecto para desarrolladores, docentes y entornos embebidos.
En este curso hemos aprendido a:
- Instalar y usar
sqlite3
desde la terminal. - Crear, consultar e importar datos fácilmente.
- Optimizar el rendimiento mediante índices, transacciones y PRAGMAs.
- Usar DB Browser for SQLite para administración visual.
- Garantizar seguridad, backups y despliegues fiables.
14.2 Cuándo usar SQLite
SQLite vs motores cliente-servidorSituación | SQLite | MySQL / PostgreSQL |
---|---|---|
Prototipos, desarrollo local | ✅ Ideal | Sobrecalificado |
Aplicaciones móviles o IoT | ✅ Perfecto | No aplicable |
Servidor multiusuario concurrente | ❌ Limitado | ✅ Recomendado |
Administración sin servidor | ✅ Sin configuración | ❌ Requiere servicio activo |
14.3 Recursos oficiales y documentación
- Documentación oficial de SQLite
- DB Browser for SQLite
- Paquete sqlite3 en Debian 13
- Paquete sqlitebrowser en Debian 13
A. Apéndices
A.1 Hoja de comandos del shell sqlite3
Comandos más usadosAcción | Comando |
---|---|
Listar tablas | .tables |
Ver estructura | .schema <tabla> |
Resultados legibles | .headers on + .mode column |
Importar CSV | .mode csv + .import fichero.csv tabla |
Backup | .backup copia.db |
Salir | .quit |
A.2 Plantillas SQL básicas
CREATE TABLE ejemplo ( id INTEGER PRIMARY KEY, nombre TEXT NOT NULL, fecha TEXT DEFAULT (date('now')) ); INSERT INTO ejemplo (nombre) VALUES ('Entrada 1'); SELECT * FROM ejemplo;
A.3 Script de backup automático
#!/bin/bash DB="/home/javier/sqlite/produccion.db" DEST="/home/javier/backups" mkdir -p "$DEST" sqlite3 "$DB" ".backup '$DEST/produccion_$(date +%F).db'" echo "Backup completado en $(date)"
A.4 Bibliografía y enlaces
- SQLite Command-Line Interface
- SQLite en Debian Wiki
- Documentación DB Browser
- Listado de PRAGMAs de SQLite