执行 SQLite 脚本

我使用以下命令启动 sqlite3 version 3.7.7,unix 11.4.2:

sqlite3 auction.db

其中还没有创建 Auction.db。

sqlite> auction.db < create.sql;

给我这个错误: near "auction": syntax error

我如何运行脚本?

141917 次浏览

您希望从 shell 而不是从 SQLite 本身内部将 create.sql提供给 sqlite3:

$ sqlite3 auction.db < create.sql

SQLite 版本的 SQL 不理解文件的 <,而您的 shell 理解。

有很多方法可以做到这一点,其中一个方法是:

sqlite3 auction.db

接下来是:

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时,我在“选项”下看到:

- init < em > file
读取和执行来自 文件的命令,它可以包含 SQL 语句和元命令的组合。

以及“ SQLITE META-COMMANDS”:

.退出这个程序

参见: 用于 SQLite 的命令行 Shell: 3. sqlite3的特殊命令(点命令)

另外,当我输入命令 sqlite3 -help时,我在“ OPTION”下看到:

- init FILENAME read/process name file