128

我使用以下命令启动 sqlite3 版本 3.7.7、unix 11.4.2:

sqlite3 auction.db

尚未创建auction.db 的地方。

sqlite> auction.db < create.sql;

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

如何运行脚本?

4

6 回答 6

181

您想从 shell 中create.sql输入sqlite3,而不是从 SQLite 内部输入:

$ sqlite3 auction.db < create.sql

SQLite 的 SQL 版本不理解<文件,你的 shell 可以。

于 2012-07-25T06:11:16.360 回答
157

有很多方法可以做到这一点,一种方法是:

sqlite3 auction.db

其次是:

sqlite> .read create.sql

一般来说,SQLite 项目有非常棒的文档!我知道我们经常在文档之前联系 Google,但在 SQLite 的案例中,文档确实是最好的技术写作。它干净、清晰、简洁。

于 2012-07-25T06:14:57.047 回答
29

为了执行简单的查询并返回我的 shell 脚本,我认为这很好用:

$ sqlite3 example.db 'SELECT * FROM some_table;'
于 2015-05-20T17:26:24.323 回答
8

对于那些使用 PowerShell

PS C:\> Get-Content create.sql -Raw | sqlite3 auction.db
于 2019-11-11T09:52:49.120 回答
4

如果您使用的是 windows CMD,您可以使用此命令使用 sqlite3 创建数据库

C:\sqlite3.exe DBNAME.db ".read DBSCRIPT.sql"

如果您没有具有该名称的数据库 sqlite3 将创建一个,并且如果您已经有一个,它仍然会运行它但出现“TABLENAME 已存在”错误,我认为您也可以使用此命令来更改已经存在的数据库(但我不确定)

于 2020-06-22T15:53:42.247 回答
1
sqlite3 -init create.sql auction.db .quit

当我输入命令man sqlite3时,我在“选项”下看到:

-init file从file
       读取和执行命令,其中可以包含 SQL 语句和元命令的混合。

在“SQLITE META-COMMANDS”下:

.quit 退出这个程序

另请参阅:SQLite 的命令行 Shell:3. sqlite3 的特殊命令(点命令)

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

-init FILENAME 读取/处理命名文件

于 2021-11-07T13:40:11.380 回答