El propósito de este artículo es explicar cómo acceder a una base de datos SQLite desde la línea de comandos en GNU/Linux. La necesidad de "conectar" o mejor dicho abrir una base de datos SQLite, surgió porque debía modificar una cuenta de usuario en una instalación de MediaWiki que utiliza SQLite como motor de base de datos.

SQLite es una librería que implementa un motor de bases de datos SQL transaccional que no necesita servidor ni configuración, por lo tanto las bases de datos SQLite son archivos que se acceden de forma local. En el sitio oficial "venden" a SQLite como el motor de bases de datos más utilizado en el mundo:

"SQLite is the most widely deployed SQL database engine in the world. The source code for SQLite is in the public domain."

Esta aseveración es correcta ya que todos los dispositivos que ejecutan Android utilizan SQLite como motor de base de datos (si tu teléfono ejecuta Android, tus contactos, SMSs, llamadas, bookmarks, etc. se guardan en bases de datos SQLite). Ya que en el mundo hay mayor cantidad de dispositivos con Android que servidores de bases de datos Oracle, MySQL, PostgreSQL, MSSQL, Informix, Firebird, etc., etc. los muchachos de SQLite no mienten.9N39DH23RS65



Para abrir una base de datos SQLite es necesario instalar el paquete sqlite3, en este caso estoy utilizando Debian, por lo tanto ejecuto:

apt-get install sqlite3

Luego es posible "conectarse" a la base de datos mediante el comando sqlite3 especificando el nombre de archivo:

# sqlite3 my_db
SQLite version 3.7.3                                                      
Enter ".help" for instructions                                            
Enter SQL statements terminated with a ";"

La sentencia .help imprime la ayuda de SQLite:

sqlite> .help                                                             
.backup ?DB? FILE      Backup DB (default "main") to FILE                 
.bail ON|OFF           Stop after hitting an error.  Default OFF          
.databases             List names and files of attached databases         
.dump ?TABLE? ...      Dump the database in an SQL text format            
                         If TABLE specified, only dump tables matching    
                         LIKE pattern TABLE.                              
.echo ON|OFF           Turn command echo on or off                        
.exit                  Exit this program                                  
.explain ?ON|OFF?      Turn output mode suitable for EXPLAIN on or off.   
                         With no args, it turns EXPLAIN on.               
.header(s) ON|OFF      Turn display of headers on or off                  
.help                  Show this message                                  
.import FILE TABLE     Import data from FILE into TABLE                   
.indices ?TABLE?       Show names of all indices                          
                         If TABLE specified, only show indices for tables 
                         matching LIKE pattern TABLE.                     
.load FILE ?ENTRY?     Load an extension library                          
.log FILE|off          Turn logging on or off.  FILE can be stderr/stdout 
.mode MODE ?TABLE?     Set output mode where MODE is one of:              
                         csv      Comma-separated values                  
                         column   Left-aligned columns.  (See .width)     
                         html     HTML <table> code                       
                         insert   SQL insert statements for TABLE
                         line     One value per line
                         list     Values delimited by .separator string
                         tabs     Tab-separated values
                         tcl      TCL list elements
.nullvalue STRING      Print STRING in place of NULL values
.output FILENAME       Send output to FILENAME
.output stdout         Send output to the screen
.prompt MAIN CONTINUE  Replace the standard prompts
.quit                  Exit this program
.read FILENAME         Execute SQL in FILENAME
.restore ?DB? FILE     Restore content of DB (default "main") from FILE
.schema ?TABLE?        Show the CREATE statements
                         If TABLE specified, only show tables matching
                         LIKE pattern TABLE.
.separator STRING      Change separator used by output mode and .import
.show                  Show the current values for various settings
.stats ON|OFF          Turn stats on or off
.tables ?TABLE?        List names of tables
                         If TABLE specified, only list tables matching
                         LIKE pattern TABLE.
.timeout MS            Try opening locked tables for MS milliseconds
.width NUM1 NUM2 ...   Set column widths for "column" mode
.timer ON|OFF          Turn the CPU timer measurement on or off
sqlite>

Una vez dentro de la base de datos se pueden realizar consultas utilizando la sintaxis SQL estándar. Para que las consultas select muestren los encabezados de las tablas, se debe utilizar el comando .headers ON

Para salir se debe ejecutar .quit

Espero sea de gran utilidad!


Tal vez pueda interesarte


Compartí este artículo