我使用以下命令启动 sqlite3 version 3.7.7,unix 11.4.2:
sqlite3 auction.db
其中还没有创建 Auction.db。
sqlite> auction.db < create.sql;
给我这个错误: near "auction": syntax error
near "auction": syntax error
我如何运行脚本?
您希望从 shell 而不是从 SQLite 本身内部将 create.sql提供给 sqlite3:
create.sql
sqlite3
$ sqlite3 auction.db < create.sql
SQLite 版本的 SQL 不理解文件的 <,而您的 shell 理解。
<
有很多方法可以做到这一点,其中一个方法是:
接下来是:
sqlite> .read create.sql
通常,SQLite 项目有非常棒的文档!我知道我们经常在使用文档之前使用谷歌,但是对于 SQLite 来说,文档确实是最好的技术写作。它干净,清晰,简洁。
为了执行简单的查询并返回到我的 shell 脚本,我认为这样做效果很好:
$ sqlite3 example.db 'SELECT * FROM some_table;'
对于那些使用 PowerShell 的用户
PS C:\> Get-Content create.sql -Raw | sqlite3 auction.db
如果您使用的是 Windows CMD,您可以使用此命令使用 sqlite3创建数据库
C:\sqlite3.exe DBNAME.db ".read DBSCRIPT.sql"
如果你没有一个名字为 sqlite3的数据库,它会创建一个,如果你已经有一个,它将运行它无论如何,但与“ TABLENAME 已经存在”错误,我认为你也可以使用这个命令来改变一个已经存在的数据库(但我不确定)
sqlite3 -init create.sql auction.db .quit
当我输入命令 man sqlite3时,我在“选项”下看到:
man sqlite3
- init < em > file 读取和执行来自 文件的命令,它可以包含 SQL 语句和元命令的组合。
以及“ SQLITE META-COMMANDS”:
.退出这个程序
参见: 用于 SQLite 的命令行 Shell: 3. sqlite3的特殊命令(点命令)。
另外,当我输入命令 sqlite3 -help时,我在“ OPTION”下看到:
sqlite3 -help
- init FILENAME read/process name file