【发布时间】:2012-07-23 12:33:44
【问题描述】:
我使用以下命令启动 sqlite3 版本 3.7.7、unix 11.4.2:
sqlite3 auction.db
还没有创建auction.db。
sqlite> auction.db < create.sql;
给我这个错误:near "auction": syntax error
如何运行脚本?
【问题讨论】:
标签: sqlite
我使用以下命令启动 sqlite3 版本 3.7.7、unix 11.4.2:
sqlite3 auction.db
还没有创建auction.db。
sqlite> auction.db < create.sql;
给我这个错误:near "auction": syntax error
如何运行脚本?
【问题讨论】:
标签: sqlite
sqlite3 -init create.sql auction.db .quit
当我输入命令man sqlite3 时,我在“OPTIONS”下看到:
-init 文件
从 file 读取和执行命令,其中可以包含 SQL 语句和元命令的混合。
在“SQLITE META-COMMANDS”下:
.quit 退出此程序
另请参阅:Command Line Shell For SQLite: 3. Special commands to sqlite3 (dot-commands)。
另外,当我输入命令sqlite3 -help 时,我在“OPTIONS”下看到:
-init FILENAME 读取/处理命名文件
【讨论】:
如果您使用的是 windows CMD,您可以使用此命令使用 sqlite3 创建数据库
C:\sqlite3.exe DBNAME.db ".read DBSCRIPT.sql"
如果你还没有同名的数据库,sqlite3 会创建一个,如果你已经有一个,它仍然会运行它但是出现“TABLENAME 已经存在”错误,我想你也可以使用这个命令来改变一个已经存在的数据库(但我不确定)
【讨论】:
对于那些使用 PowerShell 的人
PS C:\> Get-Content create.sql -Raw | sqlite3 auction.db
【讨论】:
有很多方法可以做到这一点,一种方法是:
sqlite3 auction.db
接着是:
sqlite> .read create.sql
总的来说,SQLite 项目的文档非常棒!我知道我们经常在文档之前联系 Google,但在 SQLite 的案例中,文档确实是最好的技术写作。它干净、清晰、简洁。
【讨论】:
sqlite3 命令运行.read 命令:sqlite3 autction.db '.read create.sql'。
为了执行简单的查询并返回我的 shell 脚本,我认为这很好用:
$ sqlite3 example.db 'SELECT * FROM some_table;'
【讨论】:
sqlite3 example.db 'SELECT * FROM some_table;',而不是管道回显
sqlite3 不仅从stdin 读取要执行的命令,还从最后一个参数中读取。
您想从 shell 将 create.sql 提供给 sqlite3,而不是从 SQLite 内部:
$ sqlite3 auction.db < create.sql
SQLite 的 SQL 版本不理解 < 的文件,你的 shell 可以。
【讨论】:
< 理解为输入重定向。 (例如,PowerShell。)
< 将立即退出 SQLite 提示并将错误代码返回给 shell。 .read file.sql 将离开提示,-init file.sql 将始终返回 0,因此 < 是编写脚本的最佳选择。与不支持 Windows 路径的 .read 不同,它也是跨平台的。