O que é o sqlite3 CLI
O sqlite3 é o shell oficial de linha de comando que vem junto com o SQLite. Ele abre um arquivo de banco, te dá um prompt e deixa você rodar SQL ali mesmo. Sem servidor, sem login, sem arquivo de configuração — é só um binário e um arquivo.
Na prática, você vai usar o sqlite3 na linha de comando para dar uma olhada rápida no banco, rodar consultas pontuais, despejar o schema e importar dados. É o jeito mais rápido de fuçar num banco sem precisar escrever código de aplicação.
$ sqlite3 mydata.db
SQLite version 3.45.0
Digite ".help" para dicas de uso.
sqlite>
Se o arquivo mydata.db ainda não existir, o SQLite vai criá-lo assim que você fizer a primeira alteração. Já rodar o sqlite3 sem passar nome de arquivo abre um banco temporário em memória, que some quando você fecha o shell.
Executando SQL no prompt
Depois que você entra no shell do sqlite3, é só digitar SQL e terminar cada comando com ponto e vírgula. O shell fica esperando esse ponto e vírgula — se você apertar Enter sem ele, aparece apenas um prompt de continuação.
O ponto e vírgula é o sinal de "terminei, pode executar". Esquece dele e o shell vai ficar parado num prompt ...>, esperando. Digite ; numa linha nova pra fechar.
Dot commands não são SQL
Tudo que começa com . é um dot command — uma instrução pro próprio shell, não pro motor SQL. Eles não levam ponto e vírgula e só funcionam dentro do shell sqlite3.
sqlite> .tables
books
sqlite> .schema books
CREATE TABLE books (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
year INTEGER
);
sqlite> .help
Os que você vai usar o tempo todo:
.tables— lista todas as tabelas do banco atual..schema [tabela]— mostra oCREATE TABLEde uma tabela específica ou de todas..databases— lista os arquivos de banco anexados..mode <formato>— muda como os resultados das consultas são exibidos..headers on— exibe os nomes das colunas acima dos resultados..read arquivo.sql— executa um arquivo SQL..exitou.quit— sai do shell.
O .help mostra a lista completa. São dezenas de dot commands, mas no dia a dia você vai usar uns dez, no máximo.
Deixando a saída legível
Por padrão, a saída vem separada por pipe e sem cabeçalho — ótimo pra script, péssimo pra ler. Dois dot commands resolvem isso:
sqlite> .headers on
sqlite> .mode column
sqlite> SELECT * FROM books;
id title year
-- ----------- ----
1 Duna 1965
2 Neuromancer 1984
Outros modos úteis:
.mode box— desenha uma tabela com bordas Unicode. Fica ótimo para screenshots..mode csv— separado por vírgulas, ideal para encaixar num pipe com outras ferramentas..mode json— saída em JSON, um objeto por linha..mode line— uma coluna por linha, útil quando os registros são largos.
As configurações são reiniciadas toda vez que você abre o shell. Para deixá-las permanentes, coloque-as num arquivo ~/.sqliterc que o sqlite3 carrega na inicialização.
Importar e exportar CSV no SQLite
A CLI já tem suporte nativo a CSV. Mude para o modo CSV e use .import para carregar um arquivo numa tabela:
sqlite> .mode csv
sqlite> .import authors.csv authors
sqlite> SELECT * FROM authors LIMIT 3;
Se a tabela ainda não existir, o .import cria uma usando a primeira linha como nomes de coluna. Se já existir, a primeira linha entra como dado normal — a menos que você use --skip 1.
No sentido inverso, para exportar, é só redirecionar a saída para um arquivo:
sqlite> .headers on
sqlite> .mode csv
sqlite> .output books.csv
sqlite> SELECT * FROM books;
sqlite> .output stdout
.output arquivo redireciona o resultado de todas as próximas consultas para esse arquivo, até você voltar com .output stdout. Funciona da mesma forma seja para exportar CSV, JSON ou um dump puro do schema.
Executar arquivo SQL no SQLite
Quando o script tem mais do que poucos comandos, o ideal é salvar o SQL num arquivo e executá-lo. Dentro do shell:
sqlite> .read setup.sql
Ou direto do seu terminal, sem precisar entrar no shell:
$ sqlite3 mydata.db < setup.sql
$ sqlite3 mydata.db "SELECT count(*) FROM books;"
A segunda forma roda uma única query e sai — ideal para shell scripts ou checagens rápidas. Combine com as configurações de .mode usando a flag -cmd quando precisar de uma saída formatada:
$ sqlite3 -header -column mydata.db "SELECT * FROM books;"
Inspecionando um banco de dados desconhecido
Quando alguém te passa um arquivo .db e você não faz a menor ideia do que tem dentro, o roteiro é esse aqui:
$ sqlite3 mystery.db
sqlite> .tables
sqlite> .schema
sqlite> .indexes
sqlite> SELECT count(*) FROM some_table;
.schema sem argumento despeja todos os CREATE TABLE, CREATE INDEX e CREATE TRIGGER do arquivo. Já o .indexes mostra os índices de cada tabela. Cinco minutinhos no shell costumam te contar mais sobre um banco do que qualquer README por aí.
Quando você quer um retrato textual completo, pronto pra recriar o banco em outro lugar, é só usar o .dump:
sqlite> .output backup.sql
sqlite> .dump
sqlite> .output stdout
Isso gera um script SQL que recria o banco inteiro — estrutura e dados — quando você manda de volta pro sqlite3.
Como sair do sqlite3
Você tem três jeitos de sair, todos equivalentes:
sqlite> .exit
sqlite> .quit
Ou pressione Ctrl+D no macOS e no Linux (Ctrl+Z seguido de Enter no Windows). Suas alterações já estão salvas — o SQLite faz commit de cada comando assim que ele é executado, a menos que você tenha aberto uma transação explicitamente.
Próximo passo: ferramentas gráficas para SQLite
A CLI é rápida e dá pra automatizar com scripts, mas às vezes bate aquela vontade de navegar pelas tabelas no clique, ordenar colunas e editar linhas visualmente. Existem algumas ferramentas gráficas bem decentes para SQLite — é o que vamos ver na próxima página.
Perguntas frequentes
Como abrir um banco de dados pelo SQLite CLI?
No terminal, rode sqlite3 meubanco.db. Se o arquivo ainda não existir, o SQLite só vai criá-lo de fato quando você gravar a primeira tabela. Se você chamar só sqlite3, sem nome de arquivo, ele abre um banco temporário em memória, que some quando você sair.
Como sair do shell do sqlite3?
Digite .exit ou .quit e dê Enter — os dois fazem a mesma coisa. Na maioria dos sistemas, Ctrl+D também fecha o shell (no Windows, é Ctrl+Z seguido de Enter).
O que são dot commands no SQLite?
Dot commands são comandos internos do shell que começam com ., como .tables, .schema, .mode e .import. Eles não são SQL — são instruções para o próprio CLI. Por isso não levam ponto e vírgula no final e só funcionam dentro do shell sqlite3.
Como executar um arquivo .sql pelo SQLite CLI?
Dentro do shell, use .read arquivo.sql. Se preferir rodar de fora, dá para redirecionar o arquivo: sqlite3 meubanco.db < arquivo.sql. Nos dois casos, os comandos são executados em ordem no banco aberto.