Eu inicio o sqlite3 versão 3.7.7, unix 11.4.2 usando este comando:
sqlite3 auction.db
onde leilão.db ainda não foi criado.
sqlite> auction.db < create.sql;
me dá este erro: near "auction": syntax error
Como posso executar o script?
Eu inicio o sqlite3 versão 3.7.7, unix 11.4.2 usando este comando:
sqlite3 auction.db
onde leilão.db ainda não foi criado.
sqlite> auction.db < create.sql;
me dá este erro: near "auction": syntax error
Como posso executar o script?
Respostas:
Existem muitas maneiras de fazer isso, uma delas é:
sqlite3 auction.db
Seguido por:
sqlite> .read create.sql
Em geral, o projeto SQLite tem uma documentação realmente fantástica! Eu sei que muitas vezes procuramos o Google antes dos documentos, mas no caso do SQLite, os documentos realmente são redações técnicas no seu melhor. É limpo, claro e conciso.
Você quer alimentar o create.sql
para sqlite3
partir a casca, não de dentro de si SQLite:
$ sqlite3 auction.db < create.sql
A versão do SQLite do SQL não entende <
para arquivos, seu shell sim.
<
como redirecionamento de entrada. (Por exemplo, PowerShell.)
<
sairá do prompt SQLite imediatamente e retornará o código de erro ao shell. .read file.sql
deixará o prompt ativo e -init file.sql
sempre retornará 0, então <
é o melhor para scripts. Também é multiplataforma, ao contrário do .read
que não suporta caminhos do Windows.
Para executar consultas simples e retornar ao meu script de shell, acho que isso funciona bem:
$ sqlite3 example.db 'SELECT * FROM some_table;'
sqlite3 example.db 'SELECT * FROM some_table;'
, em vez de
sqlite3
lê comandos para executar não apenas a partir stdin
, mas também a partir do último argumento.
Para quem usa PowerShell
PS C:\> Get-Content create.sql -Raw | sqlite3 auction.db
Se você estiver usando o Windows CMD você pode usar este comando para criar um banco de dados usando sqlite3
C:\sqlite3.exe DBNAME.db ".read DBSCRIPT.sql"
Se você não tem um banco de dados com esse nome sqlite3 irá criar um, e se você já tiver um, ele irá executá-lo de qualquer maneira, mas com o erro "TABLENAME já existe", acho que você também pode usar este comando para alterar um já existente banco de dados (mas não tenho certeza)
.read
comando diretamente dosqlite3
comando:sqlite3 autction.db '.read create.sql'
.