我使用以下命令启动sqlite3版本3.7.7,Unix 11.4.2:
sqlite3 auction.db
尚未创建auction.db的位置。
sqlite> auction.db < create.sql;
给我这个错误: near "auction": syntax error
如何运行脚本?
Answers:
您想要从外壳而不是从SQLite本身内部馈create.sql
入sqlite3
:
$ sqlite3 auction.db < create.sql
SQLite的SQL版本无法识别<
文件,而您的Shell可以。
<
为输入重定向。(例如,PowerShell。)
<
将立即退出SQLite提示,并将错误代码返回到Shell。.read file.sql
将保留提示,-init file.sql
并将始终返回0,因此<
最好是编写脚本。此外,它是跨平台的,与.read
不支持Windows路径的不同。
为了执行简单的查询并返回我的shell脚本,我认为这很好用:
$ sqlite3 example.db 'SELECT * FROM some_table;'
sqlite3 example.db 'SELECT * FROM some_table;'
,而不是
sqlite3
读取命令不仅要从执行stdin
,还要从最后一个参数执行。
.read
直接从sqlite3
命令运行命令:sqlite3 autction.db '.read create.sql'
。