A ferramenta de linha de comando sqlite3

ltima modificação 6 de Julho de 2020

p> Nesta parte do tutorial SQLite, cobrimos a ferramenta de linha de comandosqlite3.

A ferramenta sqlite3

A ferramenta sqlite3 é um frontend baseado em terminal para a biblioteca SQLite que pode avaliar consultas interactivamente e exibir os resultados em múltiplos formatos.Também pode ser usada dentro de scripts.

No ecrã do terminal, vemos o seguinte prompt da ferramenta sqlite3:

O comando .help é um dos meta comandos da ferramenta sqlite3; lista todos os meta comandos. O .exit e o .quit comandosexita o sqlite3 sessão. Também podemos usar a combinação de teclas Ctrl+D para abandonar sqlite3. O comando .databases mostra as bases de dados anexas. O comando .tables lista as tabelas disponíveis.

O Ctrl+L limpa o ecrã e o Ctrl+U limpa a linha actual. (Quando construído com a biblioteca de readline.)

Criar base de dados com sqlite3

A base de dados SQLite completa é armazenada num único ficheiro de disco multi-plataforma. Usamos o sqlite3 ferramenta de linha de comando para criar um novo ficheiro de base de dados.

$ sqlite3 test.db

Aqui criamos um novo test.db base de dados. Se o ficheiro existir, ele é aberto.

Basic sqlite3 meta comandos

P>Próximo descrevemos alguns dos meta comandos da ferramenta sqlite3.

sqlite> .tablesAuthors Cars Friends ReservationsBooks Customers Orders 

O comando .tables mostra as tabelas disponíveis.

sqlite> SELECT * FROM Friends;1|Jane|F2|Thomas|M3|Franklin|M4|Elisabeth|F5|Mary|F6|Lucy|F7|Jack|M

Aí obtemos a saída de uma declaração SELECT. Por defeito, o modo de saída é line e o separador é |.

sqlite> .separator :sqlite> SELECT * FROM Friends;1:Jane:F2:Thomas:M3:Franklin:M4:Elisabeth:F5:Mary:F6:Lucy:F7:Jack:M

Aqui utilizámos um novo separador de cólon.

Existem vários outros modos de saída disponíveis. O exemplo seguinte mostra o column modo de saída.

Este exemplo mostra como os dados são formatados no modo de coluna sqlite. O comando .headers também tem sido utilizado para mostrar os cabeçalhos das colunas. Por defeito, os cabeçalhos estão ocultos.

O comando .width ajusta o tamanho das colunas.(Este meta-comando é relevante apenas para tabelas no modo de coluna.)

As larguras das colunas não são suficientemente largas para mostrar todos os dados correctamente.

Aqui alteramos as larguras das colunas. A primeira columnwill terá 15 caracteres de largura e a segunda 18.

sqlite> .shell clear

O comando .shell executa os programas do sistema. Na nossa caixa, limpamos o ecrã com o comando clear. (O equivalente no Windows é cls.)

O comando .show lista várias definições. Estas incluem o modo de saída, o separador utilizado no modo de lista, e se os cabeçalhos estão ligados.

sqlite> .schema CarsCREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name TEXT, Price INTEGER);

O comando .schema mostra a estrutura da tabela. Dá ao DDL SQL para criar a tabela.

É possível alterar o prompt do comando sqlite3 com o comando .prompt.

sqlite> .prompt "> " ". "> SELECT * FROM Cars. LIMIT 2;Id Name Price ---------- ---------- ----------1 Audi 52642 2 Mercedes 57127 > 

Existem dois prompts. Uma é o prompt principal e a outra é um prompt de continuação. A mensagem principal padrão é sqlite> e a mensagem de continuação padrão é ...>.

Executar SQL a partir da shell

Podemos executar comandos SQL a partir da shell.

Aqui executámos sem interacção uma declaração SELECT; todos os carros da tabela Cars foram seleccionados.

Dumping tables

É possível descarregar tabelas em formato SQL para o disco. Desta forma, podemos facilmente guardar a estrutura e os dados de uma tabela de base de dados.

Temos a tabela Carros.

Vamos utilizar o comando .dump para despejar a tabela.

O comando .dump mostra-nos o SQL necessário para criar o Cars tabela.

sqlite> .output cars2.sqlsqlite> .dump Cars

Podemos também redireccionar a saída para um ficheiro. O .outputcommand irá redireccionar a saída para o ficheiro cars2.sql.

Mostramos o conteúdo do ficheiro cars2.sql com o ficheiro catcommand.

Leitura de SQL

Podemos ler instruções SQL de um nome de ficheiro com o .read comando.

Aqui executámos uma série de comandos. Deixamos cair a tabela e lemos a partir de cars.sql.

O ficheiro .sqlite_history

Os comandos e declarações são arquivados no ficheiro .sqlite_history file.O ficheiro está localizado no directório home.

$ tail -5 ~/.sqlite_history .tablesSELECT * FROM Cars;.mode column.headers on.show

Usando o comando tail, mostramos os últimos cincoentendimentos.

Arquivo de recurso

O comando sqlite3 tem um ficheiro de recurso chamado .sqliterc. Encontra-se no directório home. Se não existir tal ficheiro, podemos simplesmente criá-lo. O ficheiro resouce pode conter meta-comandos, ou instruções SQL regulares. No entanto, devemos evitar a utilização de SQL no ficheiro.

$ cat .sqliterc .mode column.headers on.nullvalue NULL 

Aqui está um exemplo simples de um ficheiro de recurso. Tem três meta-comandos. Com um ficheiro de recurso, não temos de executar novamente os meta comandos quando iniciamos a ferramenta sqlite3. Serão executados automaticamente no início da ferramenta.

Temos uma mensagem a dizer que a ferramenta carregou recursos no início.

Opções de linha de comando

A ferramenta tem várias opções de linha de comando. Na sua maioria duplicam os meta comandos. Note que as opções de linha de comando substituem os meta comandos do ficheiro de recursos.

$ sqlite3 --help-- Loading resources from /home/janbodnar/.sqlitercUsage: sqlite3 FILENAME FILENAME is the name of an SQLite database. A new database is createdif the file does not previously exist.OPTIONS include: -ascii set output mode to 'ascii' -bail stop after hitting an error -batch force batch I/O -column set output mode to 'column' -cmd COMMAND run "COMMAND" before reading stdin -csv set output mode to 'csv' -echo print commands before execution -init FILENAME read/process named file -header turn headers on or off -help show this message -html set output mode to HTML -interactive force interactive I/O -line set output mode to 'line' -list set output mode to 'list' -lookaside SIZE N use N entries of SZ bytes for lookaside memory -mmap N default mmap size set to N -newline SEP set output row separator. Default: '\n' -nullvalue TEXT set text string for NULL values. Default '' -pagecache SIZE N use N slots of SZ bytes each for page cache memory -scratch SIZE N use N slots of SZ bytes each for scratch memory -separator SEP set output column separator. Default: '|' -stats print memory stats before each finalize -version show SQLite version -vfs NAME use NAME as the default VFS

The --help option gives us the list of all available options witha brief description.

Iniciamos o sqlite3 ferramenta com -echo-line, e -noheader opções. A declaração SELECT é repetida/escolhida após ter sido lançada. O ouput está no modo de linha e não temos cabeçalhos expostos.

Com a opção -version obtemos a versão sqlite3.

Com a opção -html, podemos emitir os resultados como simples tabelas HTML.