Я запускаю sqlite3 версии 3.7.7, unix 11.4.2 с помощью этой команды:
sqlite3 auction.db
где аукцион.db еще не создан.
sqlite> auction.db < create.sql;
дает мне эту ошибку: near "auction": syntax error
Как мне запустить скрипт?
Я запускаю 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 документы действительно представляют собой техническую письменность в лучшем виде. Он чистый, ясный и лаконичный.
Вы хотите , чтобы кормить create.sql
INTO sqlite3
из оболочки, а не внутри самого SQLite:
$ sqlite3 auction.db < create.sql
Версия 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
, но и из последнего аргумента.
Если вы используете Windows CMD, вы можете использовать эту команду для создания базы данных с помощью sqlite3
C:\sqlite3.exe DBNAME.db ".read DBSCRIPT.sql"
Если у вас нет базы данных с таким именем, sqlite3 создаст ее, а если она у вас уже есть, она все равно запустит ее, но с ошибкой «TABLENAME уже существует», я думаю, вы также можете использовать эту команду для изменения уже существующего база данных (но я не уверен)
.read
команду непосредственно изsqlite3
команды:sqlite3 autction.db '.read create.sql'
.