Я запускаю sqlite3 версии 3.7.7, unix 11.4.2 с помощью этой команды:
sqlite3 auction.db
где аукцион.db еще не создан.
sqlite> auction.db < create.sql;
дает мне эту ошибку: near "auction": syntax error
Как мне запустить скрипт?
Есть много способов сделать это, один из них:
sqlite3 auction.db
С последующим:
sqlite> .read create.sql
В общем, у проекта SQLite действительно фантастическая документация! Я знаю, что мы часто обращаемся к Google раньше, чем за документами, но в случае с SQLite документы действительно представляют собой техническую письменность в лучшем виде. Он чистый, ясный и лаконичный.
.read
команду непосредственно изsqlite3
команды:sqlite3 autction.db '.read create.sql'
.Вы хотите , чтобы кормить
create.sql
INTOsqlite3
из оболочки, а не внутри самого SQLite:Версия SQL
<
для SQLite не понимает файлы, в отличие от вашей оболочки.источник
<
перенаправление ввода. (Например, PowerShell.)<
немедленно выйдет из приглашения SQLite и вернет код ошибки в оболочку..read file.sql
оставит приглашение вверх и-init file.sql
всегда будет возвращать 0, поэтому<
лучше всего подходит для сценариев. Также он кроссплатформенный, в отличие от.read
которого не поддерживает пути Windows.Я думаю, что для выполнения простых запросов и возврата к моему сценарию оболочки это хорошо работает:
$ sqlite3 example.db 'SELECT * FROM some_table;'
источник
sqlite3 example.db 'SELECT * FROM some_table;'
, вместо того, чтобыsqlite3
считывает команды для выполнения не только изstdin
, но и из последнего аргумента.Для тех, кто использует PowerShell
источник
Если вы используете Windows CMD, вы можете использовать эту команду для создания базы данных с помощью sqlite3
Если у вас нет базы данных с таким именем, sqlite3 создаст ее, а если она у вас уже есть, она все равно запустит ее, но с ошибкой «TABLENAME уже существует», я думаю, вы также можете использовать эту команду для изменения уже существующего база данных (но я не уверен)
источник