*来自bash脚本的非交互式* SQLite3用法

时间:2017-02-15 09:47:57

标签: bash sqlite

我看到很多示例显示如何使用sqlite3交互式shell,例如:

$ sqlite3
$ sqlite3> SELECT * from x;

但是我正在寻找一种在SQLite3数据库中使用bash脚本创建表的方法,也就是说,非交互式 - 任何人都知道如何做到这一点?

例如,以下似乎有效,它仍然是交互式

#!/bin/bash
sqlite3 test.db  "create table n (id INTEGER PRIMARY KEY,f TEXT,l TEXT);"
sqlite3 test.db  "insert into n (f,l) values ('john','smith');"
sqlite3 test.db  "select * from n";

还有一个问题 - 通过调用“sqlite3”作为后台进程“唤醒SQLite3”是否有帮助 - 或者它几乎总是在MacOS和Linux的后台运行?

3 个答案:

答案 0 :(得分:10)

虽然上面应该有效,但我认为最好不要多次调用sqlite3,因此我认为以下情况更可取:

ReadBytes

请注意,除非真的需要使用bash,否则出于便携性原因,您应该更喜欢“/ bin / sh”作为您的shebang。

答案 1 :(得分:7)

看起来像

一样简单
#!/bin/bash
sqlite3 test.db  "create table n (id INTEGER PRIMARY KEY,f TEXT,l TEXT);"
sqlite3 test.db  "insert into n (f,l) values ('john','smith');"
sqlite3 test.db  "select * from n";

来自https://mailliststock.wordpress.com/2007/03/01/sqlite-examples-with-bash-perl-and-python/

答案 2 :(得分:3)

您可以使用-batch选项禁用交互模式:

sqlite3 -batch test.db "create table n (id INTEGER PRIMARY KEY,f TEXT,l TEXT);"