2012-07-25 67 views
39

我开始了使用此命令的sqlite3版本3.7.7,UNIX 11.4.2:执行SQLite的脚本

sqlite3 auction.db 

其中auction.db尚未建立。

sqlite> auction.db < create.sql; 

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

我如何运行脚本?

回答

59

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

sqlite3 auction.db

通过如下:

sqlite> .read create.sql

一般来说,SQLite的项目有真是妙不可言文档!我知道我们经常在文档之前访问Google,但在SQLite的情况下,文档确实是技术写作最好的。它干净,清晰和简洁。

68

希望将create.sql从壳送入sqlite3,而不是从内部的SQLite本身:

$ sqlite3 auction.db < create.sql 

的SQLite的SQL版本不理解<的文件,你的壳一样。

+0

不幸的是,并非所有的炮弹明白'<'作为输入重定向。 (例如PowerShell) – Alan 2016-06-03 17:44:58

+0

@Alan PowerShell有一些输入重定向机制,不是吗?如果没有,总会有[bithop's](http://stackoverflow.com/a/11643733/479863)方法。 – 2016-06-03 17:52:51

9

为了执行简单的查询,并返回到我的shell脚本,我觉得这工作得很好:

echo 'SELECT * FROM some_table;' | sqlite3 example.db 
+2

这实际上是_mu太短的答案。 – 2015-05-20 17:30:16

+6

@ColonelThirtyTwo是的,这非常接近_mu太短的答案。我添加一个额外答案的原因是为了演示一种快速执行内联命令的方法,而不是采取创建SQL文件来存储命令的额外步骤。 – remeika 2015-08-24 23:02:51

+2

@remeika我认为更行之有效的方式来执行内联命令将'sqlite3 example.db'选择*从some_table;'',而不是管道回声 – 2018-01-21 20:49:53